FST的时候好像挂了挺多人的~
其实思路没啥难的,就是更好地理解题意吧,1到n一直循环,直到没有人能vote,一个人能vote也能叉掉一个人,一个人被叉就不能vote,判谁赢。
其实我管vote干嘛,我管好互叉就好了啊,直到局势一边倒,也就是不能叉了,谁多谁赢,这样肯定是要么D多R多,复杂度不大。
#includeusing 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;}