usaco Section1.1 Broken Necklace

题目链接:http://cerberus.delos.com:790/usacoprob2?a=75WI6aQtaO2&S=beads

1Y这道题目没什么,就是情况多一点,麻烦一点=_=

 1 /*
 2 ID: zypz4571
 3 LANG: C++
 4 TASK: beads
 5  */
 6 
 7 #include <cstdio>
 8 #include <cstdlib>
 9 #include <cstring>
10 #include <cmath>
11 #include <cctype>
12 #include <algorithm>
13 #include <queue>
14 #include <set>
15 #include <queue>
16 #include <list>
17 #include <map>
18 #define INF 0x3f3f3f3f
19 #define mid int m=(l+r)/2
20 using namespace std;
21 int main ( int argc, char *argv[] )
22 {
23     freopen("beads.in", "r", stdin); 
24     freopen("beads.out", "w", stdout);
25     char a[360]; int n; bool b[360]; memset(b, false, sizeof(b));
26     scanf("%d", &n);scanf("%s",a);
27     int cnt = 0, i, j, k, Max = 0;
28     for ( i= 0; i< n; ++i ) {
29         cnt = 0;
30         memset(b, false, sizeof(b));
31         j = i; if (a[j] == 'w') while (a[j] == 'w' && !b[j]) {
32             b[j] = true, cnt++, ++j; if (j > n-1) j = j % n;
33         }
34         char fir = a[j]; while ((a[j] == fir || a[j] == 'w') && !b[j]) {
35             b[j] = true, cnt++, ++j; if (j > n-1) j %= n;
36         }
37         k = i-1; if (k < 0) k = (k+n)%n; if (a[k] == 'w') while (a[k] == 'w' && !b[k]) {
38             b[k] = true, cnt++, --k; if (k < 0) k = (k+n)%n;
39         }
40         char sec = a[k]; while ((a[k] == sec || a[k] == 'w') && !b[k]) {
41             b[k] = true, cnt++, --k; if (k < 0) k = (k+n)%n;
42         }
43         if (cnt > Max) Max = cnt;
44     }
45     printf("%d\n", Max);
46 
47         return EXIT_SUCCESS;
48 }                /* ----------  end of function main  ---------- */

vim插件超爽………^_^前面的东西和注释,还有main函数,都是自己预先设定好的,其实还有很多东西,比如for, while, if, else, 甚至头文件,预处理,这些东西都有快捷键插入模板的~爽到爆=_=

 

posted on 2013-07-14 11:24  aries__liu  阅读(197)  评论(0编辑  收藏  举报