Codeforces 749C【模拟】
FST的时候好像挂了挺多人的~
其实思路没啥难的,就是更好地理解题意吧,1到n一直循环,直到没有人能vote,一个人能vote也能叉掉一个人,一个人被叉就不能vote,判谁赢。
其实我管vote干嘛,我管好互叉就好了啊,直到局势一边倒,也就是不能叉了,谁多谁赢,这样肯定是要么D多R多,复杂度不大。
#include<bits/stdc++.h> using namespace std; typedef __int64 LL; const int N=2e5+10; bool vis[N]; char s[N]; int Dnum,Rnum; int n,num; int main() { memset(vis,0,sizeof(vis)); scanf("%d",&n); scanf("%s",s+1); Dnum=Rnum=0; while(1) { int flag=false; for(int i=1;i<=n;i++) { if(vis[i]) continue; if(s[i]=='D') { if(Rnum) { flag=1; vis[i]=1; Rnum--; } else Dnum++; } else { if(Dnum) { flag=1; vis[i]=1; Dnum--; } else Rnum++; } } if(!flag) break; } if(Rnum) printf("R"); else printf("D"); return 0; }