码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 11527 Unique Snowflakes

时间:2016-06-16 01:29:12      阅读:139      评论:0      收藏:0      [点我收藏+]

标签:

 

用STL做会很方便

 

SET:

 1 /*by SilverN*/
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cstdio>
 6 #include<cmath>
 7 #include<set>
 8 using namespace std;
 9 const int mxn=1000020;
10 int a[mxn];
11 int n,T;
12 int main(){
13     scanf("%d",&T);
14     int i,j;
15     while(T--){
16         scanf("%d",&n);
17         for(i=1;i<=n;i++)scanf("%d",&a[i]);
18         set<int>s;
19         int L=1,R=1;
20         int ans=0;
21         while(R<=n){
22             while(R<=n && !s.count(a[R])) s.insert(a[R++]);
23             ans=max(ans,R-L);
24             s.erase(a[L++]);
25         }
26         printf("%d\n",ans);
27     }
28     return 0;
29 }

 

 

MAP:

 1 /*by SilverN*/
 2 #include<iostream>
 3 #include<algorithm>
 4 #include<cstring>
 5 #include<cstdio>
 6 #include<cmath>
 7 #include<map>
 8 using namespace std;
 9 const int mxn=1000020;
10 int a[mxn];
11 int last[mxn];
12 map<int,int>cur;
13 int T,n;
14 int main(){
15     scanf("%d",&T);
16     while(T--){
17         scanf("%d",&n);
18         int i,j;
19         cur.clear();
20         for(i=1;i<=n;i++){
21             scanf("%d",&a[i]);
22             //预处理 
23             if(!cur.count(a[i]))last[i]=-1;
24             else last[i]=cur[a[i]];
25             cur[a[i]]=i;
26         }
27         int L=1,R=1;
28         int ans=0;
29         while(R<=n){
30             while(R<=n && last[R]<L)R++;
31             ans=max(ans,R-L);
32             L++;
33         }
34         printf("%d\n",ans);
35     }
36     return 0;
37 }

 

UVA 11527 Unique Snowflakes

标签:

原文地址:http://www.cnblogs.com/SilverNebula/p/5589511.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!