【dog与lxy】8.25题解-necklace
necklace
题目描述
可怜的dog最终还是难逃厄运,被迫于lxy签下城下之约。这时候lxy开始刁难dog。
Lxy首先向dog炫耀起了自己的财富,他拿出了一段很长的项链。这个项链由n个珠子按顺序连在一起(1号珠子和n号珠子没有相连),每个珠子的颜色是1..m中的一种颜色(不妨用Ai表示第i个珠子的颜色)。
可dog当然不肯服气,于是他认为一定可以找到一段长度<=len的项链b1..blen(bi也是1..m中的一种颜色),没有出现过。
出现过的定义就是存在一组C1..Cm满足0<C1<C2<..<Cm<=n使得Aci=Bi。
然后lxy就要dog找出一段长度<=len的项链没有出现过。这时候dog发现自己中计了,因为项链太长了而lxy规定的len却很小。于是他又来找你求助了。不然的话,dog就要被迫签下卖国条约了……..现在就请你帮dog没有出现过的项链中最短的长度。
输出输出
输入文件:
第1行2个数n,m。接下来n行,每行一个数表示Ai。
输出文件:
一个数,没有出现过的项链中最短的长度。
样例
输入
2 3
1
2
输出
1
说明
样例解释
B1=3没有出现过,所以有长度为1,颜色为3的项链满足条件。
数据范围
100%的数据中,n<=500000,m<=100.
40%的数据中,n<=100,m<=3.
10%的数据中,n<=10,m<=2.
思路
给你一个长度为N的序列A1..An。其中Ai的取值范围[1,m]。要求一个最短长度Len,满足存在一个序列长度为Len的B1..Blen,这个序列在Ai中没有出现过。
- 我们思考假设在从最左端开始的一段区间范围内,如果存在1~m中间的所有数字,那么Len至少大于1。
- 假设紧跟这个区间之后又有一段数字包含了1~M。那么对于所有长度为2的序列就都已经存在,也就是Len要大于2。
- 以此类推,若整个Ai序列中以此有K个存在1~M的区间
- 而在k个1~M的区间之后,已经不会满足存在1 ~M中间的所有数字,那么Ans=K+1。
代码
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n,m,ans;
int c[501000],h[500];
int main(){
freopen("necklace.in ","r",stdin);
freopen("necklace.out","w",stdout);
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&c[i]);
int time=1,j=m;
for(int i=1;i<=n;i++)
if(h[c[i]]!=time){
h[c[i]]=time; j--;
if(j==0) {
ans++;time++;j=m;
}
}
printf("%d",ans+1);
return 0;
}
【dog与lxy】8.25题解-necklace的更多相关文章
- 【dog与lxy】8.25题解-land
land 题目描述 dog终于有了一块领地,但是现在可怜的dog面临着lxy的入侵,于是他决定在自己的领地设置炮楼来保卫自己免受QJ.现在dog找到它可以在领地上设置炮楼的N个地点.但是留给dog的时 ...
- [NOIP模拟25]题解
A.字符串 Catalan数不能再裸了 #include<cstdio> #include<iostream> #include<cstring> using na ...
- HZOI20190818模拟25题解
题面:https://www.cnblogs.com/Juve/articles/11372379.html A:字符串 其实是CATALAN数水题... 和网格一毛一样:https://www.cn ...
- 【题解】滑雪 luogu1434 记忆化搜索
记忆化搜索入门题 题目 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道在 ...
- 【bzoj1426】收集邮票
题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所 ...
- 【BZOJ1426】收集邮票 期望
[BZOJ1426]收集邮票 Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的, ...
- LeetCode Word Break II
原题链接在这里:https://leetcode.com/problems/word-break-ii/ 题目: Given a string s and a dictionary of words ...
- Jpeg(模拟)
Jpeg Time Limit:2000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit Status ...
- [TYVJ] P1004 滑雪
滑雪 背景 Background 成成第一次模拟赛 第三道 描述 Description trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示 ...
随机推荐
- 面试题:ArrayList、LinkedList、Vector三者的异同?
面试题:ArrayList.LinkedList.Vector三者的异同? 同:三个类都是实现了List接口(Collection的子接口之一),存储数据的特点相同:存储有序的.可重复的数据不同: * ...
- (转)netcore原生websocket客户端写法(ClientWebSocket)
代码: using System; using System.Net.WebSockets; using System.Text; using System.Threading; using Syst ...
- RabbitMQ高级特性
消息的可靠投递 在使用Rabbitmq的时候,作为消息发送方希望杜绝任何消息丢失或者投递失败场景.Rabbitmq为我们提供了两种方式用来控制消息的投递可靠性模式 confirm确认模式 return ...
- linux如何patch打补丁
1. 创建2个文件 1.txt 和 2.txt 并在1.txt基础上修改成为2.txt book@100ask:~/patch$ ls 1.txt 2.txt book@100ask:~/patch$ ...
- 『政善治』Postman工具 — 13、Postman接口测试综合练习
目录 (一)项目接口文档 1.鉴权接口 2.注册接口 3.登录接口 4.用户信息接口 5.注销接口 (二)网站上手动验证 (三)Postman测试实现 1.准备工作 (1)创建一个Collection ...
- [c++] 如何流畅地读写代码
代码不同于普通文字,阅读时注意两方面: 符号含义:相同符号,上下文不同时含义也不同,如*和& 阅读顺序:不总是按从左往右顺序阅读的,有时要倒着读或者跳着读逻辑才通顺 适当省略:有些内容虽然写了 ...
- CENTOS7network config文件不能直接bak 必须建立bak目录再bak
CENTOS7network config文件不能直接bak 必须建立bak目录再bak
- UltraISO制作启动盘安装CentOS7
UltraISO制作启动盘安装CentOS7 发表于 2020-03-10 | 分类于 DevOps | 没有评论 简单几个步骤即可完成启动盘的制作,非常便利 准备工具 准备8G优盘(启动盘制 ...
- unrar命令解压rar unrar e XXX.rar (验证通过20200511)
unrar命令解压rar 一个从入门到放弃再到改行的工程师 2018-05-02 17:53:04 3916 收藏展开压缩tar -cvf jpg.tar *.jpg //将目录里所有jpg文件打包成 ...
- Play-book格式写法
Play-Book playbook的组成 play 角色(主机或者主机组) task 任务,演戏的动作 总结:playbook是有多个play组成,一个play有多个task:剧本由一个或者多个演员 ...


