Codeforces 749C:Voting(暴力模拟)
http://codeforces.com/problemset/problem/749/C
题意:有n个人投票,分为 D 和 R 两派,从1~n的顺序投票,轮到某人投票的时候,他可以将对方的一个人KO,被KO的人不能投票了,这样循环,直到某一派的人全部被KO,问哪方赢。
思路:模拟。。代码好懂。。
1 #include <cstdio> 2 #include <algorithm> 3 #include <iostream> 4 #include <cstring> 5 #include <string> 6 #include <cmath> 7 #include <queue> 8 #include <vector> 9 #include <map> 10 #include <set> 11 using namespace std; 12 #define INF 0x3f3f3f3f 13 #define N 100010 14 typedef long long LL; 15 16 int main() { 17 int n; 18 string s, ss; 19 cin >> n >> s; 20 int a = 0, b = 0, d = 0, r = 0; 21 while(true) { 22 int sz = s.size(); 23 ss = ""; // ss 是当前回合没被KO的人的字符串 24 d = r = 0; 25 for(int i = 0; i < sz; i++) { 26 if(s[i] == 'D') d = 1; 27 else r = 1; 28 if(s[i] == 'D') { 29 if(!a) { 30 b--; 31 ss += 'D'; 32 } else a++; 33 } else { 34 if(!b) { 35 a--; 36 ss += 'R'; 37 } else b++; 38 } 39 } 40 s = ss; 41 if(d == 0 || r == 0) { // 如果某方都被KO 42 putchar(d == 0 ? 'R' : 'D'); break; 43 } 44 } 45 return 0; 46 }