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;
}