博弈---ZOJ 2083 Win the Game(染绳子)】的更多相关文章

原题:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2083 大意:两个人分别对n条绳子染 每次染m长 最后染不下的输,问先手胜负 思路:每一条绳子看做一个子问题(求每个绳子的SG再异或就是整个事件的SG),每条绳子 染的m的段 左右两端各一段, 分别求这左右两端的SG再异或 通过SG打表或递归求出整个绳子的各地方的SG #include<stdio.h> #include<string.h> int fi…
题意:给一端n块的板,两人玩,每次能涂相邻两块没涂过的板,不能涂的人为输,先手赢输出yes 思路:sg函数打表,练习题 代码: #include<queue> #include<cstring> #include<set> #include<map> #include<stack> #include<cmath> #include<vector> #include<cstdio> #include<ios…
http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3057 有豆类三个桩.TT和DD挑选任意数量的豆子从任何两堆轮流任何桩或相同的数字.谁拿到最后一个Bean将获胜.TT和DD是很聪明的. #include<stdio.h> #define N 300+4 bool dp[N][N][N]={0};//用bool比int省空间 void Init(){ int i,j,k,t; for(i=0;i<N;i++) fo…
题意: 首先输入K 表示一个集合的大小  之后输入集合 表示对于这对石子只能去这个集合中的元素的个数 之后输入 一个m 表示接下来对于这个集合要进行m次询问  之后m行 每行输入一个n 表示有n个堆  每堆有n1个石子  问这一行所表示的状态是赢还是输 如果赢输入W否则L   思路: 对于n堆石子 可以分成n个游戏 之后把n个游戏合起来就好了 模板一:递归 #include<stdio.h> #include<string.h> #include<algorithm>…
转载请注明出处,谢谢http://blog.csdn.net/ACM_cxlove?viewmode=contents    by---cxlove 首先当然要献上一些非常好的学习资料: 基础博弈的小结:http://blog.csdn.net/acm_cxlove/article/details/7854530 经典翻硬币游戏小结:http://blog.csdn.net/acm_cxlove/article/details/7854534 经典的删边游戏小结:http://blog.csdn…
Beans Game Time Limit: 5 Seconds Memory Limit: 32768 KB There are three piles of beans. TT and DD pick any number of beans from any pile or the same number from any two piles by turns. Who get the last bean will win. TT and DD are very clever. Input…
Beans Game Time Limit: 5 Seconds Memory Limit: 32768 KB There are three piles of beans. TT and DD pick any number of beans from any pile or the same number from any two piles by turns. Who get the last bean will win. TT and DD are very clever. Input…
[1672] 剪绳子 时间限制: 500 ms 内存限制: 65535 K 问题描述 已知长度为n的线圈,两人依次截取1~m的长度,n, m为整数,不能取者为输. 输入 输入n, m:( 0 <= n <= 1000000000, 1 <= m <= 1000000000) 输出 先手胜输出First,否者输出Second. 样例输入 3 2 1 1 样例输出 Second First 做法: 除特判外正常情况下First将一个绳环取掉一段,变成一根绳子,然后Second将 这根绳…
看了半天约数居然包括1,水了 #include<cstdio> #include<iostream> #include<algorithm> #include<cstring> #include<cmath> #include<queue> #include<map> using namespace std; #define MOD 1000000007 const int INF=0x3f3f3f3f; ; typede…
感觉ZJU上有不少博弈的题目. 这道题目还是比较好理解的,题目大概意思是:两人轮流乘一个2-9的数,从1开始乘,求谁的乘积先大于N. 还是寻找必败点必胜点,不过在这个题目里转换成了寻找必败区间必胜区间的问题 以输入1000为例,我们可以倒着来,每个人除2到9之间的一个数 1000 | 999 ... 112 |    若占住999到112,则对手必胜. 必须让对手占领此段. 1000 | 999 ... 112 | 111 ... 56 |   因此必占段是 111 -? .如果56被对手占住,…