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. 我们思考假设在从最左端开始的一段区间范围内,如果存在1~m中间的所有数字,那么Len至少大于1。

  2. 假设紧跟这个区间之后又有一段数字包含了1~M。那么对于所有长度为2的序列就都已经存在,也就是Len要大于2。

  3. 以此类推,若整个Ai序列中以此有K个存在1~M的区间

  4. 而在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的更多相关文章

  1. 【dog与lxy】8.25题解-land

    land 题目描述 dog终于有了一块领地,但是现在可怜的dog面临着lxy的入侵,于是他决定在自己的领地设置炮楼来保卫自己免受QJ.现在dog找到它可以在领地上设置炮楼的N个地点.但是留给dog的时 ...

  2. [NOIP模拟25]题解

    A.字符串 Catalan数不能再裸了 #include<cstdio> #include<iostream> #include<cstring> using na ...

  3. HZOI20190818模拟25题解

    题面:https://www.cnblogs.com/Juve/articles/11372379.html A:字符串 其实是CATALAN数水题... 和网格一毛一样:https://www.cn ...

  4. 【题解】滑雪 luogu1434 记忆化搜索

    记忆化搜索入门题 题目 Michael喜欢滑雪.这并不奇怪,因为滑雪的确很刺激.可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你.Michael想知道在 ...

  5. 【bzoj1426】收集邮票

    题目描述 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的,概率均为1/n.但是由于凡凡也很喜欢邮票,所 ...

  6. 【BZOJ1426】收集邮票 期望

    [BZOJ1426]收集邮票 Description 有n种不同的邮票,皮皮想收集所有种类的邮票.唯一的收集方法是到同学凡凡那里购买,每次只能买一张,并且买到的邮票究竟是n种邮票中的哪一种是等概率的, ...

  7. LeetCode Word Break II

    原题链接在这里:https://leetcode.com/problems/word-break-ii/ 题目: Given a string s and a dictionary of words  ...

  8. Jpeg(模拟)

    Jpeg Time Limit:2000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Submit Status  ...

  9. [TYVJ] P1004 滑雪

    滑雪   背景 Background 成成第一次模拟赛 第三道   描述 Description     trs喜欢滑雪.他来到了一个滑雪场,这个滑雪场是一个矩形,为了简便,我们用r行c列的矩阵来表示 ...

随机推荐

  1. pysmiles:一个用于读写SMILES表达式的python库

    技术背景 SMILES表达式是化学里面常用的用于标定元素之间关系的字符串,旨在用最简短的语句来完整的表达一个分子体系内所蕴含的基本信息,比如元素.连接性以及连接属性等.由于SMILES表达式的定义种类 ...

  2. python中的的异步IO

    asyncio 是干什么的? 异步网络操作 并发 协程 python3.0 时代,标准库里的异步网络模块:select(非常底层) python3.0时代,第三方异步网络库:Tornado pytho ...

  3. 第一章 FreeBSD之系统安装

    一.默认选择 >>[Boot Multi User],按回车键 二.默认选择 >> [Install] 三.选择默认的键盘设置 >>[Select] 四.配置主机名 ...

  4. Outlook关闭时最小化

    一:背景环境: 当使用Outlook的时候,不小心点关闭,会不能及时发现接收的新邮件. 二:解决方法: 利用KeepOutlookRunning.dll插件,可以实现,点击关闭时,outlook没有实 ...

  5. Git 系列教程(7)- 撤销操作

    撤销操作 在任何一个阶段,你都有可能想要撤销某些操作 有些撤销操作是不可逆的 --amend 修补提交 有时候我们提交完了才发现漏掉了几个文件没有添加,或者提交信息写错了. 此时,就可以运行带有 -- ...

  6. Django(15)外键和表关系

    外键删除操作 如果一个模型使用了外键.那么在对方那个模型被删掉后,该进行什么样的操作.可以通过on_delete来指定.可以指定的类型如下: CASCADE:级联操作.如果外键对应的那条数据被删除了, ...

  7. .Net Core导入千万级数据至Mysql

    ​最近在工作中,涉及到一个数据迁移功能,从一个txt文本文件导入到MySQL功能. 数据迁移,在互联网企业可以说经常碰到,而且涉及到千万级.亿级的数据量是很常见的.大数据量迁移,这里面就涉及到一个问题 ...

  8. JS中函数定义和使用顺序

    在js中如果定义函数是先声明函数,如: console.log(hello); //然后再去定义: function hello(){ alert("Hello");} 这种是可以 ...

  9. Python运算符 - Python零基础入门教程

    目录 一.算术运算符 二.赋值运算符 三.比较运算符 四.运算符的优先等级 五.重点总结 六.猜你喜欢 零基础 Python 学习路线推荐 : Python 学习目录 >> Python ...

  10. centos保存rpm到本地以及使用yum完全卸载软件包

    目录 保存安装的rpm到本地 方法一: 方法二(推荐): yum卸载软件包包括依赖 保存安装的rpm到本地 方法一: [root@ServerA ~]# vim /etc/yum.conf [main ...