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 }