Codeforces 749C Voting 题解

Codeforces 749C Voting 题解

题目

原题
原题链接

题意

  • 有n名议员,分属两个党派,简称R党和D党,按照输入的顺序发言,发言时不能投票,但可以让别人无法投票,一轮结束后循环,直到剩下最后一人可以投票,他会投出自己党派的一票。

代码

#include <bits/stdc++.h>
using namespace std;
int main() {
    int n;
    cin>>n;
    char str[n+1];
    scanf("%s",str);
    queue<int> R,D;
    for (int  i=0;i<n;i++){
        if (str[i]=='R')
            R.push(i);
        else D.push(i);
    }
    while (!R.empty()&&!D.empty()){
        if (R.front()<D.front())
            R.push(D.front()+n);
        else
            D.push(R.front()+n);
        R.pop();
        D.pop();
    }
    if (R.empty())
        cout<<'D'<<endl;
    else cout<<'R'<<endl;
    return 0;
}

思路

  • 使用两个队列记下对应党派人士出场次序,比较队列前端,如果某党人士比另一党人士序号小,即先出场,该人放至队尾,进入下一轮循环,同时将两组队列队首弹出,循环此步骤直到两队中任意一队空,输出非空队列所在党派的标号。

总结

  • 本题1600分,比较简单的队列模拟题,看懂题意,抓住先出场让后出场异党派人士出局无法投票这一点即可。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值