题目描述

博览馆正在展出由世上最佳的 m 位画家所画的图画。

游客在购买门票时必须说明两个数字,a 和 b,代表他要看展览中的第 a 幅至第 b 幅画(包含 a,b)之间的所有图画,而门票的价钱就是一张图画一元。

Sept 希望入场后可以看到所有名师的图画。当然,他想最小化购买门票的价格。

请求出他购买门票时应选择的 a,b,数据保证一定有解。

若存在多组解,输出 a 最小的那组

输入格式

第一行两个整数 n,m,分别表示博览馆内的图画总数及这些图画是由多少位名师的画所绘画的。

第二行包含 n个整数 ai​,代表画第 i 幅画的名师的编号。

输出格式

一行两个整数 a,b。

输入输出样例

输入 #1

12 5
2 5 3 1 3 2 4 1 1 5 4 3

输出 #1

2 7

说明/提示

数据规模与约定

  • 对于 30% 的数据,有 n≤200,m≤20。
  • 对于 60%的数据,有 n≤10^5,m≤10^3。
  • 对于 100% 的数据,有 1≤n≤106,1≤ai≤m≤2×10^3。

代码如下:

#include <stdio.h>
int a[1000005];
int b[2005]={0};
int main()
{int left,right;int k=0;int p=1,q=1;int len;int i;int n,m;scanf("%d%d",&n,&m);len=n;for(i=1;i<=n;i++){scanf("%d",&a[i]);}k=1;b[a[1]]++;//必先判断第一个再进入循环,理由如else处所述 while(q<=n){if(k==m){if(len>q-p){len=q-p;left=p;right=q;}b[a[p]]--;if(b[a[p]]==0){k--;}p++;}else//进else后应先q++,再判断k++,否则将出现错误,比如若是2-7符合要求,先判断k++再q++,将变成2-8; {q++;b[a[q]]++;if(b[a[q]]==1){k++;}}}printf("%d %d",left,right);}

P1638 逛画展(C语言)相关推荐

  1. 洛谷 P1638 逛画展

    洛谷 P1638 逛画展 题目链接 题目描述 博览馆正在展出由世上最佳的 M 位画家所画的图画. wangjy想到博览馆去看这几位大师的作品. 可是,那里的博览馆有一个很奇怪的规定,就是在购买门票时必 ...

  2. 尺取法 P1638 逛画展

    P1638 逛画展 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 其实就是求刚好拥有所有m种数字的最短区间 思路: 尺取法 当区间内数字种数刚好为m时记录一下最小区间长度 ...

  3. P1638 逛画展(尺取)

    逛画展 - 洛谷https://www.luogu.com.cn/problem/P1638 #include <iostream> #include <cstdio> #in ...

  4. P1638 逛画展——尺取法的妙用

    题目描述 博览馆正在展出由世上最佳的 mm 位画家所画的图画. 游客在购买门票时必须说明两个数字,aa 和 bb,代表他要看展览中的第 aa 幅至第 bb 幅画(包含 a,ba,b)之间的所有图画,而 ...

  5. 洛谷 [P1638 逛画展] (尺取法)

    Link https://www.luogu.org/problemnew/show/P1638 Description  博览馆正在展出由世上最佳的 M 位画家所画的图画.wangjy想到博览馆去看 ...

  6. P1638 逛画展(直尺法)

    这道题是直尺法的模板题: #include<iostream> using namespace std; const int maxn = 1e6 + 5; const int M = 2 ...

  7. 洛谷P1638 逛画展

    题目描述 博览馆正在展出由世上最佳的 m 位画家所画的图画. 游客在购买门票时必须说明两个数字,a 和 b,代表他要看展览中的第 a 幅至第 b 幅画(包含 a,b)之间的所有图画,而门票的价钱就是一 ...

  8. 洛谷P1638 逛画展-最简单的双指针做法

    思路:定义双指针x和y代表[x,y]区间,初始化x=y=0开始遍历,刚开始时一直增加y直到包含了所有作家的画,然后就从左边x开始删区间有重复作家的画就行.注意不要把任何一个作家的画删到0!! 代码如下 ...

  9. [Luogu]P1638逛画展

    注意到满足要求的区间具有单调性,于是想到用滑动窗口. 区间具有单调性,即若[L,R]满足条件, [L,R+1]必满足条件,并且[R+1,L]有可能满足条件.如此一来不用O(n^2)枚举左右端点,这样去 ...

最新文章

  1. python中的变量、Debug和数据类型
  2. 美团方法论,苦练基本功
  3. LCD显示异常分析——开机闪现花屏【转】
  4. 【RFID】基于MATLAB的RFID 系统的空中接口过程以及防碰撞算法仿真
  5. LeetCode Design TinyURL
  6. 通过Nginx复杂安装
  7. Linux读写执行(RWX)权限
  8. 一个静态库框架模板: iOS Universal Framework Mk 7
  9. Linux CentOS 6.5 + Apache + Mariadb + PHP环境搭建
  10. [ASP.NET Core 3框架揭秘] 跨平台开发体验: Windows [上篇]
  11. MySQL集群:高可用性DBMS
  12. Python_列表生成式
  13. php和asp渲染页面,Vue.js与 ASP.NET Core 服务端渲染功能
  14. Django - 日期、时间字段
  15. xaf 设置内置(built-in actions)按钮的可用状态
  16. python相机标定
  17. 2021年南京市高考成绩查询,2021年南京高考各高中成绩及本科升学率数据排名及分析...
  18. 中国人霸屏奥运会乒乓球赛这事 外国人怎么看?
  19. U盘修复后文件丢失怎么办?U盘数据丢失怎么恢复
  20. JavaScript反爬之哈希算法

热门文章

  1. 3D建模技能干货:多边形建模全方位解析
  2. 【点云处理】基于欧式聚类的点云分割
  3. Chrome插件-Vue.js devtools 解决图标不亮问题
  4. 动态库装载及 dlsym的RTLD_NEXT参数详解
  5. SBAS-InSAR输出数据不正确的问题(2)
  6. 程序设计的Kiss原则
  7. html怎么制作万年历,js+html制作简单日历的方法
  8. LED学习及一个花样流水灯的实现
  9. flask html下拉列表,如何使用Flask和HTML從python列表創建下拉菜單
  10. 产品解读丨鸿翼ISO质量体系文件管理系统 合规 安全 高效