codeforces_616D. Longest k-Good Segment(尺取法)
2016-03-25 16:11
267 查看
D. Longest k-Good Segmenttime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputThe array a with n integersis given. Let's call the sequence of one or more consecutive elements in a segment.Also let's call the segment k-good if it contains no more than k differentvalues.Find any longest k-good segment.As the input/output can reach huge size it is recommended to use fast input/output methods: for example, prefer to use scanf/printfinstead of cin/cout inC++, prefer to use BufferedReader/PrintWriter instead of Scanner/System.out in Java.InputThe first line contains two integers n, k (1 ≤ k ≤ n ≤ 5·105)— the number of elements in a and the parameter k.The second line contains n integers ai (0 ≤ ai ≤ 106)— the elements of the array a.OutputPrint two integers l, r (1 ≤ l ≤ r ≤ n)— the index of the left and the index of the right ends of some k-good longest segment. If there are several longest segments you can print any of them. The elements in a arenumbered from 1 to n fromleft to right.Examplesinput
5 5 1 2 3 4 5output
1 5input
9 3 6 5 1 2 3 2 1 4 5output
3 7input
3 1 1 2 3 106b4output
1 1
尺取法,这里有尺取法的说明,很详细。
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>using namespace std;int a[500010];int v[1000010];int main(){int i,j,n,k;memset(v,0,sizeof(v));scanf("%d%d",&n,&k);for(i=1;i<=n;i++){scanf("%d",&a[i]);}int pi=1,pj=1,num=0,ansi=1,ansj=1;for(pj=1;pj<=n;pj++){v[a[pj]]++;if(v[a[pj]]==1)num++;while(num>k){v[a[pi]]--;if(v[a[pi]]==0)num--;pi++;}if(pj-pi+1>ansj-ansi+1){ansi=pi;ansj=pj;}}printf("%d %d\n",ansi,ansj);return 0;}
相关文章推荐
- Django-Model中的ForeignKey,ManyToManyField与OneToOneField
- go语言映射map的线程协程安全问题
- Django框架利用ajax实现批量导入数据功能
- 简学LINGO(三)——实例篇
- Django Url编码问题
- Vim - Go
- Google推荐的图片加载库Glide介绍
- LIGHT OJ 1259 - Goldbach`s Conjecture(素数筛选)
- xcode7.3 关于NSDictionary category 方法命名问题的记录
- golang mgo的mongo连接池设置:必须手动加上maxPoolSize
- django 实例
- 第8课 goto 和 void 分析
- dango foreign key 指定被引用模型的字段
- HDU 4362 Dragon Ball 线段树
- Algorithms---排序之桶排序
- HDU 1847 Good Luck in CET-4 Everybody! (博弈论sg)
- google/dense_hash_map
- kernel logo 更换
- VIEWGOOD(远古)教育行业直播资源共享
- django入门记录 1