【码题集】习题

目录

史莱姆融合

松鼠接松果

 新月轩就餐 


史莱姆融合

根据题意就是一道集合合并的题,所以要用并查集,不过最后我们要输出整个序列,所以要在合并的时候维护一个链表,以便最终合并成一个大集合的时候,输出整个链表就是答案。

不过这里有一点要注意,就是我们在更新链表的时候是把两个集合给连起来,所以必须知道左边集合的最右边元素和右边集合最左元素。所以很容易想到用fa数组作集合左边元素,构造一个新数组作为集合右边元素,这样的话集合更新操作就简单了。

#include <bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,fa[N],you[N],nxt[N];
int find(int x){return x==fa[x] ? x:(fa[x]=find(fa[x]));
}
void merge(int i,int j){int x=find(i),y=find(j);//x是左边集合的最左,y是右边集合的最左if(x!=y){//合并nxt[you[x]]=y;//更新链表fa[y]=x;//更新并查集(对右边集合的)you[x]=you[y];//更新最右(对左边集合)}
}
int main(){cin>>n;for(int i=1;i<=n;i++){	fa[i]=i;you[i]=i;}//初始化for(int i=1;i<n;i++){int x,y;cin>>x>>y;merge(x,y);}for(int i=find(1);i;i=nxt[i]) cout<<i<<" ";//把整个链表输出即可return 0;
}

        

        

松鼠接松果

#include <bits/stdc++.h>//本来是一道单调队列,但是一股双指针味道,很好的一个模版题
using namespace std;//从双指针思路开始,当[l,r]满足题意的时候l左移然后更新区间极值,当[l,r]不满足题意的时候r右移
const int N=1e5+5;//所以只要完成对区间极值的维护即可,可以使用单调队列来实现,入队新元素是i,队头判断是否过期是根据区间左边界l
int q1[N],q2[N],n,D,ans=0x3f3f3f3f;
struct node {int x,y;
}a[N];
bool cmp(node p,node q){return p.x<q.x;
}
int main(){cin>>n>>D;for(int i=1;i<=n;i++)cin>>a[i].x>>a[i].y;sort(a+1,a+1+n,cmp);int L=1,h1=1,h2=1,t1=0,t2=0;//L是左指针开始for(int i=1;i<=n;i++){//i相当于右指针进行移动while(h1<=t1&&a[i].y>a[q1[t1]].y)t1--;//单减队列,队头是最大值q1[++t1]=i;//i入队while(h2<=t2&&a[i].y<a[q2[t2]].y)t2--;//单增队列,队头是最小值q2[++t2]=i;//i入队while(L<i&&a[q1[h1]].y-a[q2[h2]].y>=D){ans=min(ans,a[i].x-a[L].x);//更新答案,当前区间是[L,i]L++;     //开始寻找下一个rwhile(h1<=t1&&q1[h1]<L)h1++;//更新队头while(h2<=t2&&q2[h2]<L)h2++;//更新队头}}if(ans==0x3f3f3f3f)cout<<-1;else cout<<ans<<'\n';return 0;
}

        

        

 新月轩就餐 

思路:

其实很容易想到是双指针或者双端队列。

我们设置一个type表示当前区间已经有了多少种厨师,同时还需要记录区间中每个元素出现的次数,然后比较棘手的是移动问题了,什么时候移动呢?

我们可以发现当区间当队头元素多余时候肯定就要移动了:

统计答案就是在type等于m的时候,只要统计l和r的位置就行了。

为什么这样的移动方式就一定可以让l和r落在最佳的答案区间上?

你可以反推:因为我们的l指向的元素一定是区间中没有多余的元素,那么如果它再右移,则区间非法;如果它不移动,也就是在l的左边,那么这个区间明显不是最佳区间。

#include <bits/stdc++.h>
using namespace std;
const int N=16+5,inf=0x3f3f3f3f;
deque<int>q;
int ans=inf;
int n,m,a[N],cnt[2001],l,r,type;
int main(){cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];if(!cnt[a[i]])type++;cnt[a[i]]++;q.push_back(i);//新元素进入队尾while(!q.empty()&&cnt[a[q.front()]]>1){//队头多余时候就移动cnt[a[q.front()]]--;q.pop_front();}if(type==m){//因为种类最多m,达到m时候就一直更新答案就行if(q.size()<ans){ans=q.size();l=q.front();r=q.back();}}}cout<<l<<" "<<r;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/45424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kotlin Misk Web框架

Kotlin Misk Web框架 1 添加依赖1.1 build.gradle.kts1.2 settings.gradle.kts1.3 gradle.properties 2 请求接口3 程序模块4 主服务类5 测试结果 Misk 是由 Square 公司开发的一个开源的多语言服务器框架&#xff0c;主要用于构建微服务。它主要使用 Kotlin 语言&#xff0c;但…

UGC与AI引领的下一个10年,丝芭传媒已经准备好

丝芭传媒最近传来的消息&#xff0c;都跟技术相关。 基于自研AI大模型“Paro&#xff08;心乐舞河&#xff09;”的AIGPT及AIGC生成工具APP“鹦鹉人”开启用户内测。2023年3月技术测试的图形化智能社交基座“美踏元宇宙”&#xff0c;也将开放首轮用户内测。 此外&#xff0c…

Studying-代码随想录训练营day31| 56.合并区间、738.单调递增的数字、968.监控二叉树、贪心算法总结

第31天&#xff0c;贪心最后一节(ง •_•)ง&#x1f4aa;&#xff0c;编程语言&#xff1a;C 目录 56.合并区间 738.单调递增的数字 968.监控二叉树 贪心算法总结 56.合并区间 文档讲解&#xff1a;代码随想录合并区间 视频讲解&#xff1a;手撕合并区间 题目&#xf…

高效图纸管理:彩虹图纸管理软件助您一臂之力

高效图纸管理&#xff1a;彩虹图纸管理软件助您一臂之力 在制造业的激烈竞争中&#xff0c;高效图纸管理是企业提升竞争力和降低成本的关键。然而&#xff0c;传统的图纸管理方式往往存在效率低下、信息混乱等问题。此时&#xff0c;彩虹图纸管理软件凭借其卓越的性能和丰富的功…

一个vue页面复用方案

前言 问大家一个问题&#xff0c;曾经的你是否也遇到过&#xff0c;一个项目中有好几个页面长得基本相同&#xff0c;但又差那么一点&#xff0c;想用 vue extends 继承它又不能按需继承html模板部分&#xff0c;恰好 B 页面需要用的 A 页面 80% 的模板&#xff0c;剩下的 20%…

【验收支撑】软件系统验收计划书(直接套用原件doc)

编写软件验收计划是软件开发过程中的一个关键步骤&#xff0c;其重要性体现在以下几个方面&#xff1a; 明确验收标准&#xff1a;软件验收计划详细列出了验收的标准、测试方法、测试环境等&#xff0c;确保所有相关人员对验收的期望和要求有清晰的认识。这有助于避免在验收阶段…

triton需要cuda11.8版本--so 安装个11.8的cuda

1.安装一个11.8的cuda 查看ubunto版本 lsb_release -a查看cpu架构 uname -m到官网得到相应的命令&#xff1a;CUDA Toolkit Archive | NVIDIA Developer 依次输入两条命令。如果没有没有sudo权限就将cuda安装路径修改在自己目录下&#xff1a; sh cuda_11.8.0_520.61.05_li…

论文AIGC率超标?一键降重快速搞定

如何有效降低AIGC论文的重复率&#xff0c;也就是我们说的aigc如何降重&#xff1f;AIGC疑似度过高确实是个比较愁人的问题。如果你用AI帮忙写了论文&#xff0c;就一定要在交稿之前做一下AIGC降重的检查。一般来说&#xff0c;如果论文的AIGC超过30%&#xff0c;很可能会被判定…

【EI征稿】第四届机器人、自动化与智能控制国际会议

【快速通道】 参会方式&#xff1a;担任会议committee成员、组建workshop 、参会报告、参会交流、审稿专家、投稿参会。 会议地点&#xff1a; 湖南 长沙 会议时间&#xff1a;12月6日-9日 会议检索&#xff1a;EI检索 会议官网&#xff1a;https://www.icraic.org/ 投稿链接&a…

华为910b推理Qwen1.5-72b

前情提要&#xff1a;华为910b部署训练推理大模型&#xff0c;本人之前并没有接触过&#xff0c;所以&#xff0c;写此文档进行记录。 &#xff08;注意&#xff1a;版本适配很重要&#xff01;&#xff01;不然就像我一样走了好多坑~~~&#xff09; 首先&#xff0c;看一张图…

大鲸鱼—docker 基本概念及安装使用

目录 一、docker前言 1.什么是Docker&#xff1f; 2.Docker的宗旨 3.容器的优点 4.Docker与虚拟机的区别 5.Docker核心概念 镜像 容器 仓库 6.为什么要用容器 7.容器越来越受欢迎的原因 8.容器在内核中支持2种重要技术 二、Docker安装 三、Docker 镜像操作 1.搜…

旷视AI开源新突破:上传照片即可生成表情包视频!

日前&#xff0c;旷视科技发布了一项新的开源AI人像视频生成框架——MegActor。该框架让用户只需输入一张静态肖像图片和一段视频&#xff08;如演讲、表情包、rap&#xff09;&#xff0c;便可生成一段表情丰富、动作一致的AI人像视频。生成的视频长度取决于输入的视频长度。与…

API接口详解及其在电子商务中的应用研究

目录 引言 一、API接口概述 1.1 API接口定义 1.2 API接口的作用 二、API接口分类 2.1 根据使用对象分类 2.2 根据协议和数据格式分类 三、API接口设计原则 四、API接口在电子商务中的应用 4.1 数据交换与集成 4.2 个性化推荐与营销 4.3 库存管理与订单处理 4.4 数…

C++ 数据结构探索:构建高效程序的基础

C 数据结构探索&#xff1a;构建高效程序的基础 在C编程的广阔领域中&#xff0c;数据结构是理解和实现高效、可维护程序的核心。数据结构是计算机存储、组织数据的方式&#xff0c;它们使得数据访问和修改操作更加高效。本文将带您走进C中几种常见且重要的数据结构&#xff0…

数据湖仓一体(一) 编译hudi

目录 一、大数据组件版本信息 二、数据湖仓架构 三、数据湖仓组件部署规划 四、编译hudi 一、大数据组件版本信息 hudi-0.14.1zookeeper-3.5.7seatunnel-2.3.4kafka_2.12-3.5.2hadoop-3.3.5mysql-5.7.28apache-hive-3.1.3spark-3.3.1flink-1.17.2apache-dolphinscheduler-3.1.9…

气膜仓储与传统仓储的成本优势对比—轻空间

随着物流和仓储需求的不断增长&#xff0c;企业对仓储设施的要求也日益提高。传统仓储设施虽然具有一定的优势&#xff0c;但在建设和运营成本上往往较高。近年来&#xff0c;气膜仓储作为一种新型仓储方式&#xff0c;以其独特的优势逐渐受到市场青睐。轻空间将详细探讨气膜仓…

spring boot实现短信验证码功能

1、到阿里云网站申请 https://market.aliyun.com/products/5700000 2/cmapi00046920.html2、配置文件&#xff0c;可申请测试 sms:app-code: xxxxxxxxxtemplate-id: xxxxxxx3、使用restTemplate用于第三方接口调用 package com.example.rsocketclient.config;import org.spr…

Altium Designer输出Gerber文件步骤

参考链接 技术指导&#xff1a;Altium Designer输出Gerber文件步骤 (jlc.com)https://www.jlc.com/portal/server_guide_10171.html 特此记录 anlog 2024年7月12日

springboot 程序运行一段时间后收不到redis订阅的消息

springboot 程序运行一段时间后收不到redis订阅的消息 问题描述 程序启动后redis.user.two主题正常是可以收到消息的&#xff0c;发一条收一条&#xff0c;但是隔一段时间后&#xff1b;就收不到消息了&#xff1b; 此时如果你手动调用发送另外一个消息订阅redis.user.two2&…

豆包AI智能助手:知识库整理与智能检索的双重应用

引言 抖音豆包&#xff0c;作为字节跳动开发的AI智能助手&#xff0c;不仅仅是一个简单的虚拟角色&#xff0c;而是集成了深度学习和自然语言处理技术的复杂系统&#xff0c;专门设计来增强用户在抖音平台上的体验。同时&#xff0c;豆包的应用示范了AI智能助手在知识库管理和…