Codeforces 549C The Game Of Parity【博弈】
C语言纠错大赛的一道题,正好拿来补博弈~~
给的代码写的略奇葩。。不过还是直接在上面改了。。
题目链接:
http://codeforces.com/problemset/problem/549/C
题意:
给你n个数,两个人依次拿走一个数,最后剩下的k个数的和若为奇数,则先手赢,否则后手赢。问谁赢?
分析:
看最后依次操作:此时有k+1个数。。。
最后一次操作是先手,则
- 剩下的全为偶数,先手必输
- 剩下的全为奇数且数字个数为偶数,拿走一个后,先手赢,否则后手赢。
- 剩下的数有奇有偶,则先手在奇数偶数中随便选一个必可以使最后和为奇数,先手赢。
最后一次操作是后手,则
- 情况与先手正好相反,但是注意有奇有偶的情况,后手肯定有办法使得剩下的和为偶数,所以还是后手赢。
- 就只有剩下的全为奇数且个数也为偶数的时候,后手才会输。。。
代码:
#include<algorithm>
#include<cstdio>
using namespace std;
int n1,n2,n,k,even,odd,i,c,f;
int Solve(){
if (n==k) return odd % 2;
if (n1>n2){//s
if (n2>=odd) return 0;
if (n2<even) return 1;
return k % 2;//修改的部分
}
else{
if (n1>=even) return k % 2;//修改的部分
return 0;
}
}
int main(){
while (scanf("%d%d",&n,&k)==2){
odd=0;
even=0;
n1=(n-k+1)/2;
n2=(n-k)/2;
for (i=1;i<=n;i++){
scanf("%d",&c);
if (c % 2) odd++;
else even++;
}
f=Solve();
if (f) printf("Stannis\n");
else printf("Daenerys\n");
}
return 0;
}
Codeforces 549C The Game Of Parity【博弈】的更多相关文章
- Codeforces 549C The Game Of Parity(博弈)
The Game Of Parity Solution: 这个题只需要分类讨论就可以解决. 先分别统计奇数和偶数的个数. 然后判断谁走最后一步,如果走最后一步时候同时有偶数和奇数,那么走最后一步的赢. ...
- Codeforces 549C. The Game Of Parity[博弈论]
C. The Game Of Parity time limit per test 1 second memory limit per test 256 megabytes input standar ...
- Codeforces 549C(博弈)
C. The Game Of Parity time limit per test 1 second memory limit per test 256 megabytes input standar ...
- Codeforces 979E Kuro and Topological Parity - 动态规划 - 组合数学
题目传送门 传送点 题目大意 给定$n$个标号依次为$1, 2, \cdots, n$的点,其中一些点被染成一些颜色,剩下的点没有染色.你需要添加一些有向边并将剩下的点染色,满足有向边从编号小的一端指 ...
- Looksery Cup 2015 C. The Game Of Parity —— 博弈
题目链接:http://codeforces.com/problemset/problem/549/C C. The Game Of Parity time limit per test 1 seco ...
- Codeforces 538E Demiurges Play Again(博弈DP)
http://codeforces.com/problemset/problem/538/E 题目大意: 给出一棵树,叶子节点上都有一个值,从1-m.有两个人交替从根选择道路,先手希望到达的叶子节点尽 ...
- Codeforces 979E Kuro and Topological Parity(dp)
题面传送门 题意:有 \(n\) 个点,每个点要么被涂黑,要么被涂白,要么没有颜色. 现在你要: 给没有颜色的点图上颜色(黑色或白色) 在这 \(n\) 个点中连若干条有向边,可以不连通.但是只能从编 ...
- CodeForces 513A Game (水题,博弈)
题意:两个人有n1,n2个球,然后分别最多拿出 k1,k2个球,然后扔掉,谁先拿完谁输. 析:很简单么,每人都足够聪明,就每次扔一个好了,那么,谁的球多,谁就能赢呗,如果相等,那么第一个扔的输. 代码 ...
- Codeforces 768 E. Game of Stones 博弈DP
E. Game of Stones Sam has been teaching Jon the Game of Stones to sharpen his mind and help him de ...
随机推荐
- Ubuntu 16.04 LTS下matplotlib安装出错
使用命令sudo pip3 install matplotlib已知报错,用同样的命令安装numpy和opencv却没有,因此重装linux系统两次都没有解决(我是在Vmware中创建的).报错如下: ...
- mysql数据库比较,各数据库不同之处
和mysql数据库比较,各数据库不同之处: Oracle数据库:字段类型不同 postgresql数据库:show tables不同; SQL语句需要前面加上 模式名 Mongodb数据库:文档存储, ...
- Java集合(五)--LinkedList源码解读
首先看一下LinkedList基本源码,基于jdk1.8 public class LinkedList<E> extends AbstractSequentialList<E> ...
- SQL使用exists时的多种写法
from test; go from test; go 下面这种效率明显高不少.
- HTML基础(一)
什么是HTMLHTML Hypertext Markup Language:即超文本标记语言 HTML特点 1.HTML不需要编译,直接由浏览器执行 2.HTML文件是一个文本文件 3.HTML文件必 ...
- Android UI: LinearLayout中layout_weight 属性的使用规则
首先来查看android sdk文档,有这么一段话 LinearLayout also supports assigning a weight to individual children with ...
- luogu 5月月赛 #A
T29693 取石子 题目描述 Alice 和 Bob 在玩游戏 他们有 n 堆石子,第 i 堆石子有ai 个,保证初始时 ai≤ai+1(1≤i<n) . 现在他们轮流对这些石子进行操作 ...
- 20. ROUTINES
20. ROUTINES ROUTINES表提供有关存储例程(存储过程和存储函数)的信息. ROUTINES表不包含内置SQL函数或用户定义函数(UDF). 名为mysql.proc Name的列表示 ...
- SolrCloud架构
原文链接 https://blog.csdn.net/dingzfang/article/details/42804489 1 核心概念 Collection Shard 均为逻辑上的概念 Core为 ...
- 杭电 1213 How Many Tables (并查集求团体数)
Description Today is Ignatius' birthday. He invites a lot of friends. Now it's dinner time. Ignatius ...