sg函数
「已注销」
这个作者很懒,什么都没留下…
展开
-
HDU 5795 A Simple Nim (sg函数 打表)
思路:看到数据范围的一刹那就应该有一种暴力不能解的感觉。 再加上他说要分堆,可以把一堆分成三堆,这样也是一种状态的转移,不过,当堆里的石子数量很大的时候,可以分成三堆的情况是特别多的。。。这样的话在用sg函数进行深搜时估计会爆栈。。。 所以了,打表吧,用暴力的方式把前100个数的sg值都算出来,你会发现这么一个规律 if(n % 8 == 0) —— sg(n) = n + 1; if(n原创 2016-08-08 15:24:56 · 264 阅读 · 0 评论 -
HDU 1079 Calendar Game (博弈 sg函数)
思路:sg函数的使用。注意点:1,注意有些状态是不能转移的,而不是转移到失败状态,所以在构建sg函数的时候应该仔细想好限制条件。比如 2001 10 8 ,2001 11 1,这两个都只能一天一天的转移而不能跳一个月,因为不合法。 2,AC代码:#include <iostream>#include <string.h>#include <cstdio>using namespace std;原创 2016-08-07 10:45:59 · 871 阅读 · 0 评论 -
HDU 1536 S-Nim (博弈 sg函数 Nim和)
原题网址:http://acm.hdu.edu.cn/showproblem.php?pid=1536思路:Nim的变形,只是对你每次选取的数量做了限制,但是其他的性质并没有改变,所以可以用sg函数解决; 又或者说,Nim游戏只是一种特例,事实上有多种问题都可以用sg函数解决。sg函数的定义:sg(x) = mex { sg(y) | x->y } //mex (minimal excludan原创 2016-08-06 16:28:58 · 348 阅读 · 0 评论 -
POJ 2484 A Funny Game (博弈)
原题网址:http://poj.org/problem?id=2484思路:1,当数量小于3时,先手必胜。 2,当大于三时,后手只要跟着先手在成中心对称的位置取子就行,如果总棋子数是偶数,后手每次与先手取相同数量的棋子,如果总棋子数是奇数,那么在第一轮选择与先手不同数量的棋子数,来使总数变成偶数。 代码很简单&&简洁,就不贴了。原创 2016-08-05 10:46:09 · 269 阅读 · 0 评论 -
HDU 1847 Good Luck in CET-4 Everybody!(简单sg函数)
思路:sg函数表示的状态转移。模板题,跟以前做的一样,有不懂的请看我以前写的别的题,或者去找找相关的资料。AC代码:#include <iostream>#include <cstdio>#include <string.h>using namespace std;int dp[1010];int sg(int n){ if(dp[n] != -1)return dp[n];原创 2016-08-13 10:34:46 · 294 阅读 · 0 评论