
博弈
GooMaple
这个作者很懒,什么都没留下…
展开
-
HDU 1851 - A Simple Game
巴什博奕和Nimm博弈的组合版。 代码如下: #include #include #include #include using namespace std; int main() { #ifdef test freopen("input.txt", "r", stdin); #endif int c, n, m, num; scanf("%d", &c);原创 2013-05-04 15:37:33 · 938 阅读 · 0 评论 -
HDU 2147 - kiki's game
博弈,简单推一下必败点与必胜点,可以看出奇偶规律。 代码如下: #include #include #include #include using namespace std; int main() { #ifdef test freopen("input.txt", "r", stdin); #endif int n, m; while(scanf("%d%原创 2013-05-04 12:14:51 · 942 阅读 · 0 评论 -
UVa 10404 - Bachet's Game
类似巴什博奕,先行者要赢,假设先行者必赢的状态为1,必输为0。 则其通过集合中存在的数可以达到之前的某个0的状态,则当前状态为1,如果通过所有集合中的数都无法达到之前的某个为0的状态(即:可到达的之前状态全为1),则当前状态为0。 因为先行者如果可以达到之前某个为0的状态,则说明其达到前面这个0的状态时它实际对于之前的这个状态来说是个后行者,0代表在之前的这个状态来说是后行者赢,则对现在状态来原创 2013-05-03 22:39:28 · 890 阅读 · 0 评论 -
HDU 2149 - Public Sale
巴什博奕。 (1)如果m>n,则先行者第一次取n~m之间任意数都能保证其必胜。 (2)如果n%(m+1)==0,则必败。 (3)如果n%(m+1)!=0,则第一次先行者必须拿n%(m+1)个,才能保证必胜。 代码如下: #include #include #include #include using namespace std; int ways[102]; int main(原创 2013-05-04 15:21:57 · 785 阅读 · 0 评论 -
HDU 1850 - Being a Good Boy in Spring Festival
Nimm博弈,需要统计可行方案的个数。 代码如下: #include #include #include #include using namespace std; int ways[102]; int main() { #ifdef test freopen("input.txt", "r", stdin); #endif int m; while(scanf原创 2013-05-04 14:20:29 · 849 阅读 · 0 评论 -
HDU 1527 - 取石子游戏
裸威佐夫博奕。证明见:http://blog.youkuaiyun.com/acm_cxlove/article/details/7854530。 代码如下: #include #include #include #include #include using namespace std; double eps = 1e-9; int main() { #ifdef test freop原创 2013-05-04 16:59:16 · 878 阅读 · 0 评论 -
HDU 1849 -Rabbit and Grass
纯Nimm博弈,不过比较难看出来。 #include #include #include #include using namespace std; int main() { #ifdef test freopen("input.txt", "r", stdin); #endif int m, n; while(scanf("%d", &m) && m)原创 2013-05-04 16:10:37 · 1140 阅读 · 0 评论 -
HDU 1846 - Brave Game
巴什博奕。 代码如下: #include #include #include #include using namespace std; bool ways[1002]; int main() { #ifdef test freopen("input.txt", "r", stdin); #endif int c, n, m; scanf("%d", &c);原创 2013-05-04 11:42:06 · 806 阅读 · 0 评论 -
HDU 1907 - John
n堆石子,最后一个取完的人输。 Nimm博弈,全是1的时候,特判,数1的个数,奇数输,偶数赢了。 证明过程见:http://blog.youkuaiyun.com/acm_cxlove/article/details/7854530 代码如下: #include #include #include #include using namespace std; int main() { #ifde原创 2013-05-04 16:33:20 · 1618 阅读 · 0 评论 -
HDU 1847 - Good Luck in CET-4 Everybody!
巴什博奕。 代码如下: #include #include #include #include using namespace std; bool ways[1002]; int vis[10] = {1, 2, 4, 8, 16, 32, 64, 128, 256, 512}; int main() { #ifdef test freopen("input.txt", "原创 2013-05-04 11:54:26 · 1242 阅读 · 0 评论