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