传送门 #include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int n; while(~scanf("%d",&n)) { ; ,g=; ;i<n;i++) { scanf("%d",&a); ) c++; ) g++; res^=a; } if(!res) { )//T2 printf…
Problem Description Little John is playing very funny game with his younger brother. There is one big box filled with M&Ms of different colors. At first John has to eat several M&Ms of the same color. Then his opponent has to make a turn. And so o…
Be the Winner Problem Description   Let's consider m apples divided into n groups. Each group contains no more than 100 apples, arranged in a line. You can take any number of consecutive apples at one time.For example "@@@" can be turned into &q…
题目链接 有n堆苹果, 对于其中的每一堆的x个苹果, 它是放在一条线上的. 你每次可以对一堆苹果进行操作, 可以取y个, 1<=y<=x. 然后如果你是取的一条线上中间的苹果, 那么这一堆苹果将会变成两堆. 问你先手是否必胜. 简单的打一个sg表就可以了. 注意特判全都是1的情况. #include <iostream> #include <vector> #include <cstdio> #include <cstring> #include…
题目大意:输入一个整数n,表示火柴堆数(原题其实指的是苹果堆数,但是为了尽量与模板保持一致,所以在这里理解为火柴堆数....其实理解为什么都没关系, 重要的是,理解就行....).在接下来的一行中,有n个数字,表示每个火柴堆的火柴根数. 解题思路:还是去火柴棒的问题 详细的说明请参考上一篇博客 代码如下: /* * 2509_1.cpp * * Created on: 2013年9月1日 * Author: Administrator */ #include <iostream> using…
传送门 #include<iostream> #include<cstdio> #include<cstring> using namespace std; int main() { int t; scanf("%d",&t); while(t--) { ; ,g=;//¹Âµ¥¶Ñ¡¢³äÔ£¶Ñ scanf("%d",&n); ;i<n;i++) { scanf("%d",&a…
Be the Winner Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3591    Accepted Submission(s): 2009 Problem Description Let's consider m apples divided into n groups. Each group contains no more…
博弈论水题!!! 代码如下: #include<stdio.h> #include<iostream> using namespace std; int main(){ int i,t,n,k,m; while(cin>>n){ m=;t=; ;i<n;i++){ cin>>k; ) t++; m^=k; } &&t>=)||(m!=&&t==)) cout<<"No"<<…
传送门 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; int main() { int n; while(~scanf("%d",&n)) { ; ;i<n;i++) { scanf("%d",&a); res^=a; } if(!res)//T prin…
1.HDU 2509  2.题意:n堆苹果,两个人轮流,每次从一堆中取连续的多个,至少取一个,最后取光者败. 3.总结:Nim博弈的变形,还是不知道怎么分析,,,,看了大牛的博客. 传送门 首先给出结论:先手胜当且仅当(1)所有堆石子数都为1且游戏的SG值为0,(2)存在某堆石子数大于1且游戏的SG值不为0.证明:(1)若所有堆石子数都为1且SG值为0,则共有偶数堆石子,故先手胜.(2) i)只有一堆石子数大于1时,我们总可以对该堆石子操作,使操作后石子堆数为奇数且所有堆得石子数均为1 ii)有…
好久之前看的sg函数了 好像就记住一个nim博弈qwq 第一次啊看的时候很迷,现在感觉可以了qwq 首先我们来看一个其他的游戏.(以下游戏只有两个人参与,且足够聪明) 两个人在一张圆形的桌子上放等大的盘子,最后一个无法放盘子的人输掉比赛 很显然,先手必胜. 为什么? 第一个人可以将盘子放在桌子的中心. 然后只要第二个人可以放置盘子,我们就在其中心对称的位置上放盘子. 如此,只要后手可以放,我先手就一定能放 可以看出,有时候如果处于先手必胜的状态时,模仿对手的策略不妨是个好方法.这可以保证如果游戏…
较难,网上有能得出正确结果的代码,但是读了一下,像是拼凑出的结果,逻辑不通,代码和注释不符 参考网上代码写了一版,结构相对清晰,注释比较详细 题目很长: 两个人玩取球的游戏.一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目.如果无法继续取球,则游戏结束.此时,持有奇数个球的一方获胜.如果两人都是奇数,则为平局. 假设双方都采用最聪明的取法,第一个取球的人一定能赢吗?试编程解决这个问题. 输入格式:第一行3个正整数n1 n2 n3,空格分开,表示每次可取的数目 (0<n…
如果我们规定当局面中所有的单一游戏的SG值为0时,游戏结束,则先手必胜当且仅当:(1)游戏的SG!=0 && 存在单一游戏的SG>1:(2)游戏的SG==0  && 任意单一游戏的SG==0. /** @Date : 2017-10-15 01:49:12 * @FileName: HDU 2509 基础anti-sg.cpp * @Platform: Windows * @Author : Lweleth (SoungEarlf@gmail.com) * @Link…
HDU.2149 Public Sale (博弈论 巴什博弈) 题意分析 巴什博奕裸题 博弈论快速入门 代码总览 #include <bits/stdc++.h> using namespace std; int main() { int n,m,s,r; while(scanf("%d %d",&m,&n) != EOF){ s = m%(n+1); if(s == 0) printf("none\n"); else{ r = (m -…
HDU.1846 Brave Game (博弈论 巴什博弈) 题意分析 巴什博奕裸题 博弈论快速入门 代码总览 include <bits/stdc++.h> using namespace std; int main() { int t; scanf("%d",&t); while(t--){ int n,m; scanf("%d %d",&n,&m); int r,s; r = n%(m+1); if(r == 0) prin…
9.取球博弈  (程序设计) 两个人玩取球的游戏.一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目.如果无法继续取球,则游戏结束.此时,持有奇数个球的一方获胜.如果两人都是奇数,则为平局. 假设双方都采用最聪明的取法,第一个取球的人一定能赢吗?试编程解决这个问题. 输入格式:第一行3个正整数n1 n2 n3,空格分开,表示每次可取的数目 (0<n1,n2,n3<100)第二行5个正整数x1 x2 ... x5,空格分开,表示5局的初始球数(0<xi<10…
题目描述 输入k及k个整数n1,n2,-,nk,表示有k堆火柴棒,第i堆火柴棒的根数为ni:接着便是你和计算机取火柴棒的对弈游戏.取的规则如下:每次可以从一堆中取走若干根火柴,也可以一堆全部取走,但不允许跨堆取,也不允许不取. 谁取走最后一根火柴为胜利者. 例如:k=2,n1=n2=2,A代表你,P代表计算机,若决定A先取: A:(2,2)→(1,2) {从一堆中取一根} P:(1,2)→(1,1) {从另一堆中取一根} A:(1,1)→(1,0) P:(1,0)→ (0,0) {P胜利} 如果…
题目:https://www.luogu.org/problemnew/show/P1247 可以知道必败局面为n[1]^n[2]^...^n[k]=x=0: 而若x不等于0,则一定可以取一次使其变为0,所以此时为必胜: 取火柴数即为n[i]^x,取掉后异或和变为0: 因为取火柴数为正数,所以要n[i]>n[i]^x. 代码如下: #include<iostream> #include<cstdio> using namespace std; ],x; int main()…
题目9.取球博弈 取球博弈 两个人玩取球的游戏. 一共有N个球,每人轮流取球,每次可取集合{n1,n2,n3}中的任何一个数目. 如果无法继续取球,则游戏结束. 此时,持有奇数个球的一方获胜. 如果两人都是奇数,则为平局. 假设双方都采用最聪明的取法, 第一个取球的人一定能赢吗? 试编程解决这个问题. 输入格式: 第一行3个正整数n1 n2 n3,空格分开,表示每次可取的数目 (0<n1,n2,n3<100) 第二行5个正整数x1 x2 ... x5,空格分开,表示5局的初始球数(0<x…
2012年第三届蓝桥杯C/C++程序设计本科B组省赛 取球博弈 题目描述 **取球博弈 今盒子里有n个小球,A.B两人轮流从盒中取球,每个人都可以看到另一个人取了多少个,也可以看到盒中还剩下多少个,并且两人都很聪明,不会做出错误的判断. 我们约定: 每个人从盒子中取出的球的数目必须是:1,3,7或者8个. 轮到某一方取球时不能弃权! A先取球,然后双方交替取球,直到取完. 被迫拿到最后一个球的一方为负方(输方) 请编程确定出在双方都不判断失误的情况下,对于特定的初始球数,A是否能赢? 程序运行时…
就是   好几堆苹果  每堆苹果排成一条线  可以任意从每堆拿苹果   如果一堆苹果里拿了之后  则有两种情况 1.从不是边缘拿   拿完这一堆变成两堆 2.从边缘拿   拿完还是一堆 题目还要求 谁拿最后一堆 谁输..这种类型的分析看这个吧   https://www.cnblogs.com/WTSRUVF/p/9339499.html 看着其他人直接异或..我还是练一下sg吧.... #include <iostream> #include <cstdio> #include…
Life Winner Bo Problem Description   Bo is a "Life Winner".He likes playing chessboard games with his girlfriend G. The size of the chessboard is N×M.The top left corner is numbered(1,1) and the lower right corner is numberd (N,M). For each game…
题目:传送门 题意:一个国际象棋棋盘,有四种棋子,从(n,m)走到(1,1),走到(1,1)的人赢,先手赢输出B,后手赢输出G,平局输出D. 题解:先把从(n,m)走到(1,1)看做是从(1,1)走到(n,m). 四种棋子的规则如下: 1.王(King):横.竖.斜都可以走,每次限走一格 2.车(Rook):横.竖均可走,不能斜走,格数不受限制,除王车易位的情况下,平时不能越子 3.马(Knight):每步棋先横走或竖走一格,再斜走一格(或者横两格竖一格,竖两格横一格),可以越子 4.后(Que…
Life Winner Bo 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5754 Description Bo is a "Life Winner".He likes playing chessboard games with his girlfriend G. The size of the chessboard is N×M.The top left corner is numbered(1,1) and the lower r…
Be the Winner Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3326    Accepted Submission(s): 1853 Problem Description Let's consider m apples divided into n groups. Each group contains no more…
多堆的情况要处理好孤单堆 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<map> using namespace std; #define MOD 1000000007 const int INF=0x3f3f3f3f; ; typedef…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1846 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻. 今天,大家选择上机考试,就是一种勇敢(brave)的选择:这个短学期,我们讲的是博弈(game)专题:所以,大家现在玩的也是“勇敢者的游戏”,这也是我命名这个题目的原因. 当然,除了“勇敢”,我还希望看到“诚信”,无论考…
题目传送:http://acm.hdu.edu.cn/showproblem.php?pid=1846 Problem Description 十年前读大学的时候,中国每年都要从国外引进一些电影大片,其中有一部电影就叫<勇敢者的游戏>(英文名称:Zathura),一直到现在,我依然对于电影中的部分电脑特技印象深刻.今天,大家选择上机考试,就是一种勇敢(brave)的选择:这个短学期,我们讲的是博弈(game)专题:所以,大家现在玩的也是“勇敢者的游戏”,这也是我命名这个题目的原因.当然,除了“…
Stone Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2204    Accepted Submission(s): 1553 Problem Description Tang and Jiang are good friends. To decide whose treat it is for dinner, they are p…
Be the Winner Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4939    Accepted Submission(s): 2724 Problem Description Let's consider m apples divided into n groups. Each group contains no more…