HDU - 6266 - HDU 6266 Hakase and Nano (博弈论)
题意:
有两个人从N个石子堆中拿石子,其中一个人可以拿两次,第二个人只能拿一次。最后拿完的人胜利。
思路:
| 类型 | Hakase先 | Hakase后 |
|---|---|---|
| 1 | W | L |
| 1 1 | W | W |
| 1 1 1 (3n) | L | W |
| 1 1 1 1 (3n+1) | W | L |
| 1 1 1 1 1 (3n+2) | W | W |
| 类型 | Hakase先 | Hakase后 |
|---|---|---|
| X 1 1 | W | L |
| X Y 1 | W | W |
| X Y Z | W | W |
| X 1 1 1 | W | L |
| X Y 1 1 | W | W |
| X Y Z 1 | W | W |
| X 1 1 1 1 | W | W |
| X Y 1 1 1 | W | W |
1.若n = 3t,若每个石子堆都是1,A先手必输(1 1 1)。只有一个数量大于1的石子堆,则B先手A必输(X 1 1)。
2.若n = 3t+1,若只有一堆柿子大于1(X 1 1 1)。则B先手A必输。
按照结论写代码。。
代码:
#include<iostream>
using namespace std;
int main() {
int t, n, d;
scanf("%d", &t);
while(t--) {
bool flag = true;
int cnt = 0, a;
scanf("%d %d", &n, &d);
for(int i = 0; i < n; i++) {
scanf("%d", &a);
if(a >= 2)
cnt++;
}
int x = n % 3;
if(x == 0) {
if(cnt==0 && d==1)
flag = false;
if(cnt==1 && d==2)
flag = false;
}else if(x == 1){
if(cnt<=1 && d==2)
flag = false;
}
if(flag) printf("Yes\n");
else printf("No\n");
}
return 0;
}
HDU - 6266 - HDU 6266 Hakase and Nano (博弈论)的更多相关文章
- HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析)
HDU.1847 Good Luck in CET-4 Everybody! ( 博弈论 SG分析) 题意分析 简单的SG分析 题意分析 简单的nim 博弈 博弈论快速入门 代码总览 //#inclu ...
- Hakase and Nano 【思维博弈】
Hakase and Nano 时间限制: 1 Sec 内存限制: 128 MB 提交: 400 解决: 104 [提交] [状态] [命题人:admin] 题目描述 Hakase and Nan ...
- upc组队赛2 Hakase and Nano【思维博弈】
Hakase and Nano 题目描述 Hakase and Nano are playing an ancient pebble game (pebble is a kind of rock). ...
- HDU - 2222,HDU - 2896,HDU - 3065,ZOJ - 3430 AC自动机求文本串和模式串信息(模板题)
最近正在学AC自动机,按照惯例需要刷一套kuangbin的AC自动机专题巩固 在网上看过很多模板,感觉kuangbin大神的模板最为简洁,于是就选择了用kuangbin大神的模板. AC自动机其实就是 ...
- hdu 2177 取(2堆)石子游戏 博弈论
由于要输出方案,变得复杂了.数据不是很大,首先打表,所有whthoff 的奇异局势. 然后直接判断是否为必胜局面. 如果必胜,首先判断能否直接同时相减得到.这里不需要遍历或者二分查找.由于两者同时减去 ...
- hdu 1847 Good Luck in CET-4 Everybody! 博弈论
方法一:找规律,很容易知道 #include<stdio.h> int main(){ int n; while(scanf("%d",&n)!=EOF){ p ...
- HDU.3032.Nim or not Nim?(博弈论 Lasker's Nim)
题目链接 \(Description\) 有多堆石子, 每次可以将任意一堆拿走任意个或者将这一堆分成非空的两堆, 拿走最后一颗石子的人胜利.问谁会获得胜利. \(Solution\) Lasker's ...
- HDU 3062 && HDU 1824 && POJ 3678 && BZOJ 1997 2-SAT
一条边<u,v>表示u选那么v一定被选. #include <iostream> #include <cstring> #include <cstdio> ...
- HDU 1069&&HDU 1087 (DP 最长序列之和)
H - Super Jumping! Jumping! Jumping! Time Limit:1000MS Memory Limit:32768KB 64bit IO Format: ...
随机推荐
- redis Database Eviction Policies Redis on Flash
Database Eviction Policies - Redis Enterprise Software | Redis Labs https://redislabs.com/redis-ente ...
- QQ空间说说 视频播放
http://182.254.8.83/vwecam.gtimg.com/1006_d81d60f3c83844a5ad6a184149d4ccbb.f0.mp4?sha=78A27CF4908AB5 ...
- 01排序的Java实现
比赛描写叙述: 的个数同样时再按ASCII码值排序. 输入: 个字符. 输出: 串的顺序.使得串按基本描写叙述的方式排序. 例子输入: 例子输出: 被AC的代码例如以下: import java.ut ...
- 关于Doctype、严格模式与混杂模式
<!Doctype> 文档声明,位于文档中的最前面的位置,处于<html>标签之前.此标签告知浏览器文档使用哪种HTML或XHTML规范. 用于告知浏览器以何种模式来渲染文档. ...
- YTU 2504: 蚂蚁感冒
2504: 蚂蚁感冒 时间限制: 1 Sec 内存限制: 128 MB 提交: 273 解决: 118 题目描述 长100厘米的细长直杆子上有n只蚂蚁.它们的头有的朝左,有的朝右.每只蚂蚁都只能沿 ...
- USACO Section 1.2PROB Transformations
挺有趣的一道题,呵呵,不算难 /* ID: jusonal1 PROG: transform LANG: C++ */ #include <iostream> #include <f ...
- luogu 1080 国王游戏
题目大意: 有一些数对,每个数对的得分为它之前所有数对的左侧数之乘积除以它的右侧数 求重新排列后数列中所有数对中最大得分尽可能小(第一个数对不参与排序,仍然为第一个) 思路: 非常简单,可以根据它对后 ...
- php可以定义数组的常量吗
是这样吗?<?php define('BEST_PHPER',array('name'=>'巩文','address'=>'china')); My God,明确告诉你不可以:原因是 ...
- GIT学习之路第四天 远程仓库
本文参考廖雪峰老师的博客进行总结,完整学习请转廖雪峰博客 git的服务器---Github,自行注册github账号后,按下面的步骤操作: 第一步,事实上,本地Git仓库和Github仓库之间的传输是 ...
- jquery 菜单展开与收缩参考脚本
/* * metismenu - v1.1.3 * Easy menu jQuery plugin for Twitter Bootstrap 3 * https://github.com/onoku ...