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

CodeForces 701C They Are Everywhere 尺取法

时间:2016-08-09 00:15:02      阅读:229      评论:0      收藏:0      [点我收藏+]

标签:

简单的尺取法……

先找到右边界 然后在已经有了所有字母后减小左边界……

不断优化最短区间就好了~

 1 #include<stdio.h>
 2 #include<string.h>
 3 #define M(a,b) memset(a,b,sizeof(a))
 4 char a[200005];
 5 int zimu[205];
 6 int zimu1[205];
 7 bool in[205];
 8 int sum;
 9 int main(){
10     int n;
11     while(~scanf("%d",&n)){
12         getchar();
13         M(zimu,0);
14         M(in,false);
15         gets(a);
16         sum=0;
17         int minx=1000005;
18         for(int i=0;i<n;i++){
19             if(!in[a[i]-A]){
20                 in[a[i]-A]=true;
21                 sum++;
22             }
23         }
24         M(in,false);
25         int l=0,r=0,num=0;
26         while(r<n){
27             zimu[a[r]-A]++;
28             if(!in[a[r]-A]){
29                 in[a[r]-A]=true;
30                 num++;
31             }
32             if(sum==num){
33                 while(true){
34                     if(zimu[a[l]-A]==1) break;
35                     else zimu[a[l]-A]--;
36                     l++;  //在这里T了一发
37                 }
38                 if(r-l+1<minx) minx=r-l+1;
39             }
40             r++;
41         }
42         printf("%d\n",minx);
43     }
44     return 0;
45 }
46 /*
47 
48 3
49 AaA
50 7
51 bcAAcbc
52 6
53 aaBCCe
54 
55 
56 */

 

CodeForces 701C They Are Everywhere 尺取法

标签:

原文地址:http://www.cnblogs.com/general10/p/5751360.html

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