您的位置:首页 > 其它

Codeforces 749C Voting 贪心+模拟

2016-12-20 14:56 447 查看
点击打开链接

题意:有两组人D和R,一次轮流投票,D的人可以说R里面的某个人不能投,也可以什么都不做,R里面的同理  

//贪心:轮到第i人(D)投票时,应选择把下一个能做决策的对手X(R)淘汰(既淘汰掉一个人,又防止下一个D被淘汰,即可能又多了一次淘汰(R)的机会) 

//RDRDDRD ->RDD->D Win:D  

//用队列模拟即可 


#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int,int> P;
const int inf=1e9;
const int N=2e5+20;
char s
;

int main()
{
int n;
while(cin>>n)
{
queue<int> d,r;
scanf("%s",s+1);
for(int i=1;i<=n;i++)
{
if(s[i]=='D')
d.push(i);
else
r.push(i);
}
while(!d.empty()&&!r.empty())
{
int x=d.front(),y=r.front();
//小的先做决策
if(x<y)
{
r.pop();//淘汰

d.pop();//做完决策后等待下一轮
d.push(x+n);
}
else
{
d.pop();
r.pop();
r.push(y+n);
}
}
if(d.empty())
puts("R");
else
puts("D");
}
return 0;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: