[USACO 1.1.4]破碎的项链

地址:http://hustoj.sinaapp.com/problem.php?id=1819

 

方法:枚举断点,注意全是w的情况

 

 1 #include <stdio.h>
 2 
 3 int nl[701];//necklace
 4 int n;//珠子个数
 5 
 6 int main()
 7 {
 8     int f1,f2,l1,l2,i=0;
 9     int ca=0,cb=0,ans=0;
10     char in[701];
11     scanf("%d",&n);
12     scanf("%s",in);
13     for(i=0;i<n;i++)
14     {
15         if('b'==in[i])
16         {
17             nl[i]=1;
18             nl[i+n]=1;
19         }
20         else if('w'==in[i])
21         {
22             nl[i]=10;
23             nl[i+n]=10;
24         }
25         else if('r'==in[i])
26         {
27             nl[i]=-1;
28             nl[i+n]=-1;
29         }
30     }
31     for(i=0;i<n;i++)
32     {
33         f1=i;
34         f2=nl[f1];
35         l1=f1+n-1;
36         l2=nl[l1];
37         ca=0;
38         cb=0;
39         while(nl[f1]==f2 || nl[f1]==10 || f2==10)
40         {
41             if(10==f2) f2=nl[f1];
42             ca++;
43             f1++;
44             if(f1-i==n) break;
45         }
46         while(l1>=f1 && (nl[l1]==l2 || nl[l1]==10 || l2==10))
47         {
48             if(10==l2) l2=nl[l1];
49             cb++;
50             l1--;
51             if(i+n-1-l1==n) break;
52         }
53         ans=(ca+cb)>ans?(ca+cb):ans;
54     }
55     printf("%d\n",ans);
56     return 0;
57 }

 

posted @ 2013-01-17 00:25  tjsuhst  阅读(308)  评论(0编辑  收藏  举报