题目描述 Description

给你一个长度为n的数字串,数字串里会包含1-m这些数字。如果连续的一段数字子串包含了1-m这些数字,则称这个数字字串为NUM串。你的任务是求出长度最短的NUM串是什么,只需要输出这个长度即可。
1<=n,m<=200000

输入描述 Input Description

第一行给定n和m。 
第二行n个数,表示数字串,数字间用空格隔开。

输出描述 Output Description

如果存在NUM串则输出最短NUM串长度,否则输出“NO”。

样例输入 Sample Input

5 3
1 2 2 3 1

样例输出 Sample Output

3

数据范围及提示 Data Size & Hint

各个测试点1s

  1. /*
  2. 设l和r序列的左端点和右端点,长度即为r-l+1,先使r增加,并且统计每个数字出现的次数,1~m都凑齐后,再使l增加,当一个数字出现1次以上时,就可以抛弃它,直到某个数字只出现过一次,一定要边循环边判断,因为在循环的过程中,不断有满足在1~m中的数字添进来,所以最优解是不断更新的。
  3. */
  4. #include<cstdio>
  5. #include<iostream>
  6. #define M 200010
  7. #define INF 0x3f3f3f3f
  8. using namespace std;
  9. int a[M],sum[M];
  10. int main()
  11. {
  12. int n,m;
  13. scanf("%d%d",&n,&m);
  14. for(int i=;i<=n;i++)
  15. scanf("%d",&a[i]);
  16. int l=,cnt=,ans=INF;
  17. for(int r=;r<=n;r++)
  18. {
  19. if(a[r]<||a[r]>m)continue;
  20. if(!sum[a[r]])cnt++;
  21. sum[a[r]]++;
  22. if(cnt==m)
  23. {
  24. for(int i=l;i<=n;i++)
  25. {
  26. if(sum[a[i]]>)
  27. {
  28. sum[a[i]]--;
  29. l++;
  30. }
  31. else break;
  32. }
  33. ans=min(ans,r-l+);
  34. }
  35. }
  36. if(cnt!=m)printf("NO");
  37. else printf("%d",ans);
  38. return ;
  39. }

数字串(codevs 1394)的更多相关文章

  1. 解决 PHPExcel 长数字串显示为科学计数

    解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. ...

  2. Openjudge 1.13-40 提取数字串按数值排序

    40:提取数字串按数值排序 查看 总时间限制:  1000ms 内存限制:  65536kB 描述 给定一个字符串,请将其中的所有数字串提取,并将每个数字串作为整数看待(假设可以用int 表示),按从 ...

  3. IT公司100题-25-求字符串中的最长数字串

    问题描述: 实现一个函数,求出字符串中的连续最长数字串.例如输入”12345cbf3456″,输出”12345″. 函数原型为: void conti_num_max( const char * sr ...

  4. TYVJ P1063 数字串 Label:双指针 线性扫描

    描述 给你一个长度为n的数字串,数字串里会包含1-m这些数字.如果连续的一段数字子串包含了1-m这些数字,则称这个数字字串为NUM串.你的任务是求出长度最短的NUM串是什么,只需要输出这个长度即可.1 ...

  5. parseInt在IE8转换返回不相等(parseInt("08")返回0等以0开头大于7的数字串)

    描述 在IE8内核下parseInt("08")返回0,等以0开头大于7的数字串返回的值不相等 解决方法 parseInt当不指定radix时,当以0x开头时,s按照十六进制计算的 ...

  6. 【模拟】Vijos P1005 超长数字串

    题目链接: https://vijos.org/p/1005 题目大意: 无限的正整数按顺序拼接成字符串S(S=12345678910111213...),给你一个字符串A(len<=200)求 ...

  7. 基于visual Studio2013解决面试题之0908最大连续数字串

     题目

  8. 解决 PHPExcel 长数字串显示为科学计数[转]

    解决 PHPExcel 长数字串显示为科学计数 在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. ...

  9. [HAOI2015]数字串拆分

    题目描述 你有一个长度为n的数字串.定义f(S)为将S拆分成若干个1~m的数的和的方案数,比如m=2时,f(4)=5,分别为4=1+1+1+1你可以将这个数字串分割成若干个数字(允许前导0),将他们加 ...

随机推荐

  1. codevs 2915 期末考试

    时间限制: 1 s  空间限制: 16000 KB  题目等级 : 黄金 Gold 题目描述 Description 期末考试要来了,某同学正在努力复习. 他要复习N个知识点,每个知识点需要一定的知识 ...

  2. Spring中的事务传播行为与隔离级别

    事务传播行为 事务传播行为(为了解决业务层方法之间互相调用的事务问题): 当事务方法被另一个事务方法调用时,必须指定事务应该如何传播.例如:方法可能继续在现有事务中运行,也可能开启一个新事务,并在自己 ...

  3. 获取显示设备的名称及PNPDeviceID

    实现效果: 知识运用: ManagementObjectSearcher类和ManagementObject类 实现代码: private void button1_Click(object send ...

  4. PJSIP-iOS源码编译

    官方文档https://trac.pjsip.org/repos/wiki/Getting-Started/iPhone 功能 在iPhone上可以实现的功能: 包含基于CoreAudio的音频设备, ...

  5. CPP-基础:cout

    C++编程语言互换流中的标准输出流,需要iostream.h支持.读为 "c out". 使用范例 //用户输入的数字由cin保存于变量a中,并通过cout输出. #include ...

  6. JavaScript中数据类型和typeof返回的数据类型

    除了上图,要注意三点:1.symbol是ES6中新增的数据类型 2.typeof(null)结果是Object 3.typeof(Object)和typeof(Array)的结果是function,因 ...

  7. Springboot邮箱接口(使用个人邮箱发送邮件)

    近期项目使用邮件验证,这里使用个人邮箱进行测试,记录开发笔记 SpringBoot自带短信接口 maven pom.xml 引入: <dependency> <groupId> ...

  8. ios之自定义UISwitch

    系统自带的UISwitch是这样的: 既不能写字,也不能改颜色,于是在网上找到了这么一个自定义的Switch按钮,具体出处找不见了.记录一下,怕以后找不见了. 先看下效果图: 按钮的样式很多,可以文字 ...

  9. Experiments done

    喷重金属 换重金属溶液 荧光光合 备注 ASD 备注 高光谱 备注 泡EDTA 备注 电镜 备注 2018.12.19(day1) 2018.12.19(day1) 2018.12.18晚(day0) ...

  10. jmx_exportter+prometheus+grafana监控hadoop

    0.介绍(摘录自https://www.hi-linux.com/posts/25047.html) 什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和 ...