(hnust 1459)取石子游戏2(博弈)
来源:互联网 发布:c语言机器人编程代码 编辑:程序博客网 时间:2024/06/08 12:38
时间限制: 1 Sec 内存限制: 128 MB
提交: 12 解决: 5
[提交][状态][讨论版]
题目描述
Kerwin 和 Lester是一对好Basefriend,在“六一光棍节”这天,他们漫步校园,来到了一个石子堆前。
Kerwin决定戏耍一下Lester,以便让他为自己的晚饭买单,以解救自己羞涩的钱包。Kerwin来到石子堆前,抓了一把石子,分成了几堆,说道:“Lester,咱们来玩个游戏吧。”“什么游戏?”“你看,这里有几堆石子,我们轮流从其中一堆拿走一个或者两个石子,由我先取,如果谁取走了最后一颗石子谁输。嗯,输一局请对方一顿饭。”Lester听完规则,微微一下“好啊!”Kerwin虽然对于Lester的微笑心下有些底气不足,但是也没法多想。
果不其然,几局过后,Kerwin输得一塌糊涂,已经欠下了一个月的晚饭了。Kerwin心下很是气恼。Lester一看Kerwin的恼怒样,决定再刺激他一下“最后一局来把大的吧,你赢了,咱俩扯平,反之,你多输半个月的。怎么样,划算吧?”
一直在关注着他们俩的你,在一旁也看不下去了。在Kerwin做出决定前,你发现了Lester获胜的原因。你告诉了Kerwin最佳策略。
Kerwin并不愚蠢,知晓最佳策略后,他立即知道了最佳策略下,游戏的结果。
那么他是否应该答应Lester的挑战呢?
输入
一个正整数T(1 ≤ T ≤ 100),表示有T组数据。
以下每组数据各有两行输入
第一行包含两个正整数N(1 ≤ N ≤ 100000),表示有N堆石子。
第二行包含N个正整数Ai(1 ≤ i ≤ N, 1 ≤ Ai ≤ 100000)表示第i堆石子有Ai个石子。
输出
每组数据输出一行,包含一个字符串,当Kerwin有必胜策略时,输出“Yes”,当Kerwin必败时,输出“No”。(在Lester采取最佳策略的情况下)
样例输入
2
1
1
2
1 2
样例输出
No
Yes
提示
来源
wxDIY
分析:两个人轮流从任意一堆拿走一个或者两个,像这种就会考虑,有多少队最后会剩下1个或者2个
在这题中,分析可知,只有当不是3的倍数的若干堆中,
情况1:所有的都是1且是偶数个堆
情况2:有 奇数堆个 中有2个石子**
#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int main(){ int t; scanf("%d",&t); while(t--) { int n,num1=0,num2=0,a; scanf("%d",&n); while(n--) { scanf("%d",&a); if(a%3==1) num1++; if(a%3==2) num2++; } if((num1%2==0&&num2==0)||num2%2==1) puts("Yes"); else puts("No"); } return 0;}
- (hnust 1459)取石子游戏2(博弈)
- 取石子游戏(博弈)
- 取石子游戏(博弈算法)
- POJ1067 取石子游戏 (威佐夫博弈)
- POJ 1067 取石子游戏 (博弈)
- 取石子游戏(博弈类)
- 2516取石子游戏(简单博弈)
- hdu 2516 取石子游戏(博弈)
- hdu 2516 取石子游戏 (博弈)
- HDOJ 取石子游戏(威佐夫博弈)
- 取石子游戏(威佐夫博弈)
- 取石子游戏(威佐夫博弈)
- HDU 1527 取石子游戏 (博弈)
- 取石子游戏(hdu1527+威佐夫博弈)
- 取石子游戏(hdu2516+FIB博弈)
- hdu1257取石子游戏(威佐夫博弈)
- [POJ1067]取石子游戏(威佐夫博弈)
- POJ1067 取石子游戏(威佐夫博弈)
- poj2976(二分,最大值平均化模板)Dropping tests
- Qt判断网络是否在
- 上升子序列
- Java面板基础:JPanel和JScrollPane
- 完全卸载oracle11g步骤
- (hnust 1459)取石子游戏2(博弈)
- mysql中用存储过程做分页操作
- ARM学习之GPIO实现流水灯
- 获取网络数据进行Gson解析用ListView展示
- 静态类内容总结
- Bash中变量的讨论
- 洛谷8月月赛
- NN的一些笔记和思考
- platform_driver_probe 函数使用解释