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【博弈】的更多相关文章

  1. Codeforces 549C The Game Of Parity(博弈)

    The Game Of Parity Solution: 这个题只需要分类讨论就可以解决. 先分别统计奇数和偶数的个数. 然后判断谁走最后一步,如果走最后一步时候同时有偶数和奇数,那么走最后一步的赢. ...

  2. 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 ...

  3. Codeforces 549C(博弈)

    C. The Game Of Parity time limit per test 1 second memory limit per test 256 megabytes input standar ...

  4. Codeforces 979E Kuro and Topological Parity - 动态规划 - 组合数学

    题目传送门 传送点 题目大意 给定$n$个标号依次为$1, 2, \cdots, n$的点,其中一些点被染成一些颜色,剩下的点没有染色.你需要添加一些有向边并将剩下的点染色,满足有向边从编号小的一端指 ...

  5. 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 ...

  6. Codeforces 538E Demiurges Play Again(博弈DP)

    http://codeforces.com/problemset/problem/538/E 题目大意: 给出一棵树,叶子节点上都有一个值,从1-m.有两个人交替从根选择道路,先手希望到达的叶子节点尽 ...

  7. Codeforces 979E Kuro and Topological Parity(dp)

    题面传送门 题意:有 \(n\) 个点,每个点要么被涂黑,要么被涂白,要么没有颜色. 现在你要: 给没有颜色的点图上颜色(黑色或白色) 在这 \(n\) 个点中连若干条有向边,可以不连通.但是只能从编 ...

  8. CodeForces 513A Game (水题,博弈)

    题意:两个人有n1,n2个球,然后分别最多拿出 k1,k2个球,然后扔掉,谁先拿完谁输. 析:很简单么,每人都足够聪明,就每次扔一个好了,那么,谁的球多,谁就能赢呗,如果相等,那么第一个扔的输. 代码 ...

  9. 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 ...

随机推荐

  1. iOS 随笔小技巧 弱self 打印当前类行数列数,多人开发自动适配pch地址,获取设备uid的信息

    $(SRCROOT)/PrefixHeader.pch自动适配pch地址 __weak __block typeof(self) weakself = self; __weak typeof(self ...

  2. Android系统级技巧合集

    Android系统级技巧合集(随时更新) #转载请注明来源# 1.高通骁龙系列查看CPU体质等级 CPU体质,即为CPU在工作频率下的电压.同一批次的CPU体质各有不同,体质越高,代表该颗CPU可在更 ...

  3. (转载)RedHat Enterprise Linux 5 安装GCC

    注:在RedHat Enterprise Linux 5使用gcc编译第一个程序时,发现其gcc并未安装.在网上搜索看到这篇帖子.遂转到此处进行学习.感谢博客园中的“风尘孤客”的分享.@风尘孤客 Ab ...

  4. chrome 打开上次关闭的tab ctrl+shift+T

    chrome 打开上次关闭的tab ctrl+shift+T

  5. 优先队列 || POJ 1442 Black Box

    给n个数,依次按顺序插入,第二行m个数,a[i]=b表示在第b次插入后输出第i小的数 *解法:写两个优先队列,q1里由大到小排,q2由小到大排,保持q2中有i-1个元素,那么第i小的元素就是q2的to ...

  6. 日常[splay]:水题记——营业额统计

    没错这就是让我深陷splay之中的罪魁祸首,昨天打了一下午结果发现是玄学错误的那个 人生第一棵splay平衡树 题目大意:求一段序列,小于当前元素的最大值和大于当前元素的最小值.从该元素前面的元素找. ...

  7. python interview questions

    referce:python interview questions top 50 refercence:python interview questions top 15 summary Q: wh ...

  8. python+Eclipse+pydev环境搭建1

    编辑器: Eclipse + pydev插件 1. Eclipse是写JAVA的IDE, 这样就可以通用了,学习代价小.  学会了Eclipse, 以后写Python或者JAVA 都可以. 2. Ec ...

  9. Linux常用命令大全3

    linux命令1,关机shutdown -h now2,init 0 关闭系统3,shutdown -h hours:minutes &按预定时间关闭系统4,shutdown -c取消按预定时 ...

  10. cf上分的失落->高兴->更失落

    cf昨日做出一个题居然div2打了1800多名直接上分了...我原以为垂直落地但是....我现在1399差一分就能蓝名了啊啊啊啊,以后不一定会有这个水平的啊,给个蓝名体验卡不行吗,多加一分会死啊... ...