题意:给你n个数,找出一个最大的区间,满足:不同的数值个数不超过k;

    //我开始又看错题了、 以为是找出一个最大区间,里面的数的最大值不超过k;

思路:利用一个窗口滑动,左端点表示当前位置,右端点表示目前这段数列符合要求, 每增加一个长度,判断是否合理,不然平移左端点。                         思路来自:http://blog.csdn.net/u011528035/article/details/50521870#;

 #include<cstdio>
#include<iostream>
#include<cmath>
using namespace std;
const int qq=1e6;
int num[qq];
int dp[qq];
int l,r,k,n,ans,dif,p,q; //定义的全局变量自动初始化为0(包括数组).
int main()
{
cin >> n >> k;
l=r=;
for(int i=;i<=n;++i){
cin >> num[i];
if(!dp[num[i]]) ++dif;
dp[num[i]]++;
r=i;
if(dif>k){
for(int j=l;j<=r;++j){
dp[num[j]]--;
if(!dp[num[j]]){
dif--;l=j+;break;
}
}
}
if(r-l+>ans){
ans=r-l+;q=l;p=r;
}
}
cout << q << " " << p << endl;
}

最新文章

  1. iOS多线程简介
  2. Windows Server 2012 克隆修改SID
  3. Arcgis for JS之Cluster聚类分析的实现(基于区域范围的)
  4. 2016年2月18日 JAVA基础
  5. reverse(), extend(), sort() methods of list
  6. 46. Permutations
  7. Java反转单链表(code)
  8. MacBook Pro 的照相机在哪?
  9. 自定义组合控件,适配器原理-Day31
  10. Feedly订阅Blog部落格RSS网摘 - Blog透视镜
  11. POJ1087 A Plug for UNIX 【最大流】
  12. JAVA基础--线程
  13. MYSQL GROUP BY Optimization
  14. 你不知道的Javascript:有趣的setTimeout
  15. Go笔记-指针
  16. c++智能指针和二叉树(1): 图解层序遍历和逐层打印二叉树
  17. 在Windows Phone 8.1中使用Sqlite数据库
  18. VUE中 style scoped 修改原有样式
  19. 自定义CRM系统
  20. HDU 2795 Billboard【点修改】

热门文章

  1. SpringMVC代码复制版
  2. 关于如何在部署环境修改process.env &amp; 本地测试
  3. 利用Factory-boy来生成实例数据
  4. vsync信号产生与分发
  5. PLAY2.6-SCALA(十一) 模板常用场景
  6. 掀开SQL的神秘面纱,将优化进行到底
  7. 大数据技术之Hadoop(HDFS)
  8. javascript如何将时间戳转为24小时制
  9. jdbc知识点(连接mysql)
  10. PHPCMS快速建站系列之标签调用出错