Codeforces Round #388 (Div. 2) C. Voting
题意:有n个人,每个人要么是属于D派要么就是R派的。从编号1开始按顺序,每个人都有一次机会可以剔除其他任何一个人(被剔除的人就不在序列中也就失去了剔除其他人的机会了);当轮完一遍后就再次从头从仅存的人中从编号最小开始重复执行上述操作,直至仅存在一派,问最后获胜的是哪一派? 并且,题目假设每个人的选择是最优的,即每个人的操作都是会尽可能的让自己所属的派获胜的。
题解: 一开始看到说每个人的操作都会是最优的还以为是个博弈(=_=),,,仔细琢磨了下样例发现并不用,只要贪心模拟就行了。贪心的策略并不难:对于第i个人,他所要做的是剔除掉里位置i最近的反派的人;因为剔除掉离自己最近的一位反派的话,就可以尽可能使后面自己派的人中多存活一个;如果去剔除其他位置的人的话,都没有比这么操作的更优。那如果从i后续的位置都没有反派的时候,那就剔除位置i前面的编号最小的反派;一开始的时候只是直觉要这么贪心...过了之后才知道怎么证明的:前面说了每个人剔除从自己后面中相离最近的反派,如果位置i~n中没有反派存在,但因为轮完一轮之后又会从头开始轮一遍,所以我们就把这种循环化为线性来处理,即在i~n位置中没有反派就继续往后n+1、n+2....n+i-1(即1、2....i-1)中遍历直至找到最近的一个反派。 模拟的时候,将其作为线性处理就很解决了: 创建两个队列按编号顺序分别存两派的人的编号。每次操作将两队列中头元素较小的那个元素取出放到队尾,然后将另一队列的头元素弹出(即编号较小的人小操作,剔除反派中编号最小的一个人),放到对尾的元素编号要再加上n(即将其置为下论仍有操作的人)。 不断重复直至一个队列为空。
/**
* @author Wixson
*/
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
#include <queue>
#include <stack>
#include <vector>
#include <utility>
#include <map>
#include <set>
const int inf=0x3f3f3f3f;
const double PI=acos(-1.0);
const double EPS=1e-;
using namespace std;
typedef long long ll;
typedef pair<int,int> P; int n;
char str[];
int main()
{
//freopen("input.txt","r",stdin);
scanf("%d",&n);
scanf("%s",str);
//
char ans;
queue<int> qd,qr;
//
for(int i=;i<n;i++)
{
if(str[i]=='D') qd.push(i);
else qr.push(i);
}
//
while(true)
{
if(qd.empty())
{
ans='R';
break;
}
else if(qr.empty())
{
ans='D';
break;
}
//
if(qd.front()<qr.front())
{
qr.pop();
qd.push(qd.front()+n);
qd.pop();
}
else
{
qd.pop();
qr.push(qr.front()+n);
qr.pop();
}
}
//
printf("%c\n",ans);
return ;
}
Codeforces Round #388 (Div. 2) C. Voting的更多相关文章
- Codeforces Round #388 (Div. 2)
# Name A Bachgold Problem standard input/output 1 s, 256 MB x6036 B Parallelogram is Back s ...
- Codeforces Round #388 (Div. 2) - C
题目链接:http://codeforces.com/contest/749/problem/C 题意:给定一个长度为n的D/R序列,代表每个人的派别,然后进行发表意见,顺序是从1到n.每个人到他的回 ...
- Codeforces Round #388 (Div. 2) - B
题目链接:http://codeforces.com/contest/749/problem/B 题意:给定平行四边形的3个点,输出所有可能的第四个点. 思路:枚举任意两个点形成的直线,然后利用这两个 ...
- Codeforces Round #388 (Div. 2) - A
题目链接:http://codeforces.com/contest/749/problem/A 题意:给定一个数n,求把n分解成尽量多的素数相加.输入素数个数和具体方案. 思路:因为要尽量多的素数, ...
- Codeforces Round #388 (Div. 2) A,B,C,D
A. Bachgold Problem time limit per test 1 second memory limit per test 256 megabytes input standard ...
- Codeforces Round #388 (Div. 2) A+B+C!
A. Bachgold Problem 任何一个数都可以由1和2组成,由于n是大于等于2的,也就是可以由2和3组成.要求最多的素数即素数越小越好,很明显2越多越好,如果n为奇数则再输出一个3即可. i ...
- Codeforces Round #388 (Div. 2) 749E(巧妙的概率dp思想)
题目大意 给定一个1到n的排列,然后随机选取一个区间,让这个区间内的数随机改变顺序,问这样的一次操作后,该排列的逆序数的期望是多少 首先,一个随机的长度为len的排列的逆序数是(len)*(len-1 ...
- Codeforces Round #388 (Div. 2) D
There are n people taking part in auction today. The rules of auction are classical. There were n bi ...
- Codeforces Round #366 (Div. 2) ABC
Codeforces Round #366 (Div. 2) A I hate that I love that I hate it水题 #I hate that I love that I hate ...
随机推荐
- ACM_他和她(最大生成树+最短路径)
他和她 Time Limit: 2000/1000ms (Java/Others) Problem Description: 大二上学期刚过完,平时成绩不错的小V参加了一个小型编程比赛,遇到一道题,虽 ...
- 在Django中使用redis:包括安装、配置、启动。
一.安装redis: 1.下载: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 2.解压 tar -zxvf redis-.tar ...
- (转)Vue 爬坑之路(三)—— 使用 vue-router 跳转页面
使用 Vue.js 做项目的时候,一个页面是由多个组件构成的,所以在跳转页面的时候,并不适合用传统的 href,于是 vue-router 应运而生. 官方文档: https://router.vue ...
- asp.net MVC 下拉多级联动及编辑
多级联动实现,附源码.当前,部分代码是参与博客园其它网友. 新增,前台代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 2 ...
- Unity的分辨率
问题: 强制设置程序运行的分辨率 解决办法: 在程序开始运行时就对分辨率进行设定 设定方法如下: void GetResolution() { int width = Screen.currentRe ...
- eclipse常用设置之项目分组查看
1.打开‘NaviNavigator’ 视图,windows-->show views->NaviNavigator; 2.在NaviNavigator视图下选择select workin ...
- PAT_A1018#Public Bike Management
Source: PAT A1018 Public Bike Management (30 分) Description: There is a public bike service in Hangz ...
- CSS练习:仿小米官网
代码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UT ...
- 转:Windows Phone 7 设计简介
英文原文:smashingmagazine 导读:Windows Phone 7 引进了一个全新的内容管理和用户界面,命名为Metro的设计语言和理论.微软这次所看准的市场和用户群也与之前的老一代 W ...
- linux - redis基础
目录 linux - redis基础 redis 源码编译安装 redis 数据结构 1. strings类型 2. list 类型 3. sets集合类型 有序集合 5. 哈希数据结构 centos ...