2015-04-05 22:04:32

总结:这场比较简单... 写了3题。最后一题待补...

 

A:严格按照题意来写,几个注意点:(1)有3种字符。(2)3种字符出现次数一样。(3)三种字符按顺序出现。

 1 #include <cstdio>
 2 #include <cstring>
 3 #include <cstdlib>
 4 #include <cmath>
 5 #include <vector>
 6 #include <map>
 7 #include <set>
 8 #include <stack>
 9 #include <queue>
10 #include <string>
11 #include <iostream>
12 #include <algorithm>
13 using namespace std;
14 
15 #define MEM(a,b) memset(a,b,sizeof(a))
16 #define REP(i,n) for(int i=0;i<(n);++i)
17 #define FOR(i,a,b) for(int i=(a);i<=(b);++i)
18 #define getmid(l,r) ((l) + ((r) - (l)) / 2)
19 #define MP(a,b) make_pair(a,b)
20 
21 typedef long long ll;
22 typedef pair<int,int> pii;
23 const int INF = (1 << 30) - 1;
24 
25 char s[1000];
26 int vis[300];
27 
28 int main(){
29     while(scanf("%s",s) != EOF){
30         MEM(vis,0);
31         int len = strlen(s);
32         bool flag = true;
33         vis[s[0]] = 1;
34         for(int i = 1; i < len; ++i){
35             if(s[i] == s[i - 1]){
36                 vis[s[i]]++;
37                 continue;
38             }
39             if(vis[s[i]]){
40                 flag = false;
41                 break;
42             }
43             else vis[s[i]] = 1;
44         }
45         int cnt = 0;
46         int num = 0;
47         for(int i = 0; i < 300; ++i) if(vis[i]){
48             if(cnt == 0) num = vis[i];
49             cnt++;
50             if(vis[i] != num){
51                 flag = false;
52                 break;
53             }
54         }
55         if(flag && cnt == 3){
56             printf("YES\n");
57         }
58         else printf("NO\n");
59     }
60     return 0;
61 }
View Code

相关文章: