题目链接:

http://codeforces.com/problemset/problem/749/C

题目大意:

共有n个人,编号为1~n。他们每个人属于且仅属于R阵营或N阵营中的一个。现在他们要进行一场投票。投票可能进行多轮,每一轮投票都是按照从1~n的顺序,当轮到某一人投票的时候,他可以什么都不做,也可以随便挑选一人使他丧失投票的权利。每个人都会代表自己阵营的利益。一个人如果丧失了投票权利,则他直到这场投票结束都不能再投票。投票直到某一阵营一个人都没有的时候就会结束,此时一个人都没有的阵营失败,另一个阵营获胜。

现在给定每个人所属的阵营,问最后哪个阵营会获胜。

解题思路:

采用贪心的思路,每个人都干掉自己后面投票的第一个对手。

具体来说就是用两个队列来模拟两个阵营。分别为D-队列和R-队列。初始分别按顺序加入自己阵营的所有人的编号。每次队头的两个人pk,编号小的一方获胜,将获胜方编号+n并且push到队尾(表示本轮投票结束,将进行下轮投票),失败方直接从本方队列中pop掉即可。最终队列空的一方失败,另一方获胜。

代码:

 #include <iostream>
#include <string>
#include <cstdio>
#include <queue>
using namespace std; int n;
string s; int main()
{
cin >> n >> s;
queue<int> qd, qr;
for (int i = ; i < n; i++)
{
if (s[i] == 'D')
{
qd.push(i);
}
else
{
qr.push(i);
}
}
while (!qd.empty() && !qr.empty())
{
if (qd.front() < qr.front())
{
qr.pop();
qd.push(qd.front() + n);
qd.pop();
}
else
{
qd.pop();
qr.push(qr.front() + n);
qr.pop();
}
}
if (qd.empty())
{
cout << "R" << endl;
}
else
{
cout << "D" << endl;
}
return ;
}

CF749C Voting的更多相关文章

  1. 11G RAC 中 OCR 及Voting Disk 相关操作

    一.启动oracle clusterware先决条件:Oracle High Availability Services daemon(OHASD)运行在所有集群节点上1.启动整个Oracle Clu ...

  2. UVA10142/PC110108Australian Voting

    UVA10142/PC110108Australian Voting 10142 Australian Voting Accepted C++11 0.769 2014-02-11 05:01:20 ...

  3. windows 环境怎样恢复 (oracle 11g grid) ocr voting 损坏的集群

     windows 环境怎样恢复 (oracle 11g grid) ocr voting 损坏的集群 oracle 11g 以后 ocr 能够放到 asm 磁盘上,而ASM的启动依赖于ocr和vo ...

  4. 11g r2 模拟OCR和voting disk不可用,完整恢复过程,以及一些注意事项

    环境:RHEL5.8 RAC 11.2.0.3.0 1:查看ORC和voting disk信息: In 11g Release 2 your voting disk data is automatic ...

  5. Voting

    Voting time limit per test 1 second memory limit per test 256 megabytes input standard input output ...

  6. Graphical Analysis of German Parliament Voting Pattern

    We use network visualizations to look into the voting patterns in the current German parliament. I d ...

  7. CSA Round #54 $\ $Voting

    CSA Round #54 \(\ \)Voting 题目大意: 原题网址:戳我戳我! 一次歌唱比赛中,一位歌手刚刚结束表演,评委正在打分. 一共有 \(n\) 位评委,他们每人可以打 \(1\) 分 ...

  8. Solidity by Example详解 - Voting

    Example地址:https://solidity.readthedocs.io/en/develop/solidity-by-example.html#voting Voting程序的功能: 这个 ...

  9. Oracle 10g RAC OCR、Voting disk更换

    环境:OEL 5.7 + Oracle 10.2.0.5 RAC 需求:更换存储,OCR.Voting disk同时需要更换到新存储. 1.替换OCR 2.替换voting disk 1.替换OCR ...

随机推荐

  1. MYSQL进阶学习笔记十一:MySQL 表的分析,检查和优化!(视频序号:进阶_28)

    知识点十二:MySQL 表的分析,检查和优化(28) 表的分析,检查和优化: 定期分析表: ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE tbl_name [, ...

  2. 设置Tomcat的jvm内存问题

    tomcat的jvm大小设置与操作系统以及jdk有关:具体来说: 1.操作系统是32bit的,程序最大内存访问空间是4G, 2的32次方,这是硬件决定的,跟windows linux没有任何关系. 2 ...

  3. Spring3 Schedule Task之注解实现 (两次起动Schedule Task 的解决方案)

    Spring3 Schedule Task之注解实现 (两次起步Schedule Task 的解决方案)Spring3 Schedule Task之注解实现 (两次启动Schedule Task 的解 ...

  4. 阮一峰 KMP BM算法

    存一个链接,讲得好啊! 点击这里打开     字符串KMP 点击这里打开     字符串匹配的Boyer-Moore算法

  5. Android「后台下载」Feb.24小记

    参考了CSDN上的这个文章(HERE),之前只是新开一个线程: public class DownloadThread implements Runnable{ String tarFile ; pu ...

  6. gitbucket

    github固然强大,但不怎么适合企业级的开发版本管理,原因相信大家都明白,首先在github上上传和拉取代码速度是比较慢的,再者,在Github上创建一个私有仓库是收费的,那么gitbucket是一 ...

  7. linux C之access函数(转载)

    转自:http://blog.sina.com.cn/s/blog_6a1837e90100uh5d.html access():判断是否具有存取文件的权限 相关函数    stat,open,chm ...

  8. Android Handler消息机制源码解析

    好记性不如烂笔头,今天来分析一下Handler的源码实现 Handler机制是Android系统的基础,是多线程之间切换的基础.下面我们分析一下Handler的源码实现. Handler消息机制有4个 ...

  9. 【POJ - 2376】Cleaning Shifts(贪心)

    Cleaning Shifts Descriptions: 原文是English,我这就直接上Chinese了,想看原文的点一下链接哦 大表哥分配 N (1 <= N <= 25,000) ...

  10. Java中JRE、JDK和JVM的区别

    一.三者的基本概念: JRE(Java Development Kit):Java的运行环境: JDK(Java Runtime Enviroment):Java开发工具包: JVM(Java Vir ...