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 }
原文地址:https://www.cnblogs.com/fightfordream/p/6201628.html