51Nod-1430-奇偶游戏
来源:互联网 发布:用u盘制作linux启动盘 编辑:程序博客网 时间:2024/06/07 02:41
ACM模版
描述
题解
一看就是博弈论,但是一开始没有想通是什么思路,后来发现,这个最后的奇偶性其实就和最后留下来的数中奇数的个数有关,所以我们只需要判断一下谁会对最后的奇数个数有决定性影响即可。
那么首先我们需要累计出奇数城市和偶数城市的个数以及先手和后手出手次数,这样,结合所需要保留的城市数,我们可以分为大致三种情况,只剩下奇数城市,只剩下偶数城市,剩下的城市奇数偶数都有。对于第一种情况,我们只需要根据剩下的城市数来判断即可,而第二种情况就很明了了,至于第三种情况,我们需要判断谁最后一次取,最后一次取的人起决定性作用。
代码
#include <iostream>using namespace std;void D_win(){ cout << "Daenerys" << endl;}void S_win(){ cout << "Stannis" << endl;}int n, k;int main(){ scanf("%d%d", &n, &k); int cnt1 = 0, cnt2, x; for (int i = 1; i <= n; i++) { scanf("%d", &x); if (x & 1) { cnt1++; } } cnt2 = n - cnt1; int D_cnt = (n - k) >> 1; // 后手取的次数 int S_cnt = (n - k) & 1 ? D_cnt + 1 : D_cnt; if (cnt1 <= D_cnt) { D_win(); return 0; } if (((k & 1) == 0) && cnt2 <= D_cnt) { D_win(); return 0; } if (((k & 1) == 1) && cnt2 <= S_cnt) { S_win(); return 0; } if (n == k) { if ((cnt1 & 1) == 0) { D_win(); } else { S_win(); } return 0; } if (S_cnt > D_cnt) { S_win(); } else { D_win(); } return 0;}
阅读全文
0 0
- [51nod 1430]奇偶游戏
- 51Nod-1430-奇偶游戏
- 51nod 1430:奇偶游戏 博弈
- 51 Nod 1430 奇偶游戏(博弈)
- 51Nod-1617-奇偶数组
- [51nod1430]奇偶游戏
- 51nod 1617 奇偶数组 分治
- 51nod 硬币游戏
- 51 nod bash游戏
- 迷宫游戏 51Nod
- 51Nod 迷宫游戏
- 威佐夫游戏 51Nod
- 51NOD 1459 迷宫游戏
- 51Nod 1459 迷宫游戏
- 51nod 1066 Bash游戏
- 51NOD-1390 游戏得分
- 51nod 1381 硬币游戏
- 51nod 1066 Bash游戏
- java面试题全集(中)
- 孩子们的游戏(圆圈中最后剩下的数)
- zabbix3.4 监控tomcat多实例(一)
- UGUI新手引导系统
- 1481:Maximum sum(2.6基本算法之动态规划)
- 51Nod-1430-奇偶游戏
- GIT gitk图形界面中文乱码修改
- Java高并发编程(一)
- quartz详解1:初步了解quartz
- BZOJ 4152 [AMPPZ2014]The Captain dijkstra
- JavaScript基础之操作DOM
- $MODULE详解
- [Android]判断Context是不是Activity
- POST提交的数据过大被截断解决方法