题解:
转化成求Nim-sum
每行黑白棋的初始间距作为每堆石子个数
如果当前为P态,则不管当前选手怎样操作,下一个选手都能使其操作后的局面又变为P态。
Nim-sum = 0,即P态。
#include
#include
#include
#include
using namespace std;
int main() {
int n, m;
while(...
分类:
其他好文 时间:
2014-08-23 10:02:50
阅读次数:
274
题意:
桌子上有M堆扑克牌;每堆牌的数量分别为Ni(i=1…M);
两人轮流进行;每走一步可以任意选择一堆并取走其中的任意张牌;
桌子上的扑克全部取光,则游戏结束;最后一次取牌的人为胜者。
题解:
尼姆博奕(Nimm Game)
先求所有堆的 Nim-sum = N1 ^ N2 ^ ... NM
然后
res =Nim-sum ^ Ni
如果 res
即为剩下的局...
分类:
编程语言 时间:
2014-08-22 16:30:19
阅读次数:
251
题目大意:有N(1 2 #include 3 using namespace std; 4 long long ans=0; 5 int T; 6 int n; 7 int main() 8 { 9 scanf("%d",&T);10 while(T--)11 {12 ...
分类:
其他好文 时间:
2014-08-16 17:02:30
阅读次数:
191
S-Nim
Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 4479 Accepted Submission(s): 1941
Problem Description
Arthur and his sister ...
分类:
其他好文 时间:
2014-08-15 18:01:39
阅读次数:
333
Let's play a game
Time Limit: 2 Seconds Memory Limit: 65536 KB
Elves from the Lothvain forest have created a very interesting game. The rules are very simple:
There are two players.
...
分类:
其他好文 时间:
2014-08-15 17:56:19
阅读次数:
251
砍树思路:可以将题目意图转化为:给定一棵树,求其中最接近总权值一半的子树。DFS求每个节点的所有子节点的权值和,遍历每个节点,最接近总权值一半的即为答案。复杂度O(N)。石子游戏:思路:一个Nim博弈问题,寻找一个局面的平衡状态,由于是多堆石子,参看Nim博弈的相关理论。
分类:
其他好文 时间:
2014-08-14 16:39:08
阅读次数:
206
#include
#include
int s[110];
int sg[10010],hash[110];
int n, m;
int getsg(int x) //sg模板
{
int i;
if(sg[x] != -1)
return sg[x];
memset(hash,0,sizeof(hash));
for(i = 0; i < n; i++)
{...
分类:
其他好文 时间:
2014-08-13 18:47:07
阅读次数:
205
题目链接:uva 1566 - John
题目大意:反Nim游戏,除了取到最后一个石子的为输,其他规则和Nim游戏相同。
解题思路:特判全为1的情况,负责答案就是Nim和。
#include
#include
#include
using namespace std;
const int maxn = 50;
int main () {
int cas;
...
分类:
其他好文 时间:
2014-08-09 00:17:16
阅读次数:
331
题目链接:uva 1559 - Nim
题目大意:有n个人,奇数的为一队,偶数的为一对,两队分别从一堆石子个数为S的石子堆中取石子,取到最后一个石子一方则视为失败。给出各个队员每次可取石子的上限值,然后按照顺序操作。
解题思路:dp[i][s]表示第i个选手操作时剩s个石子时为必胜还是必败。因为是取到最后一个石子的为输,所以最后递归结束的条件和不同的略有不同。
还尝试过可以将石子数减...
分类:
其他好文 时间:
2014-08-07 13:15:10
阅读次数:
179