
博弈
不可不戒
这个作者很懒,什么都没留下…
展开
-
hdu1846 Brave Game
#include int main() { int n,m,test; scanf("%d",&test); while(test--) { scanf("%d %d",&n,&m); if(n%(m+1)==0) printf("second\n"); else printf("first\n"); } return 0; }原创 2013-07-17 15:50:15 · 714 阅读 · 0 评论 -
hdu1848 Fibonacci again and again (博弈SG值)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1848 #include #include #define MAXN 1002 int sg[MAXN],hash[MAXN]; int fib[15]={1,2,3,5,8,13,21,34,55,89,144,233,377,610,987}; void getSG(int n)原创 2013-08-20 11:14:30 · 818 阅读 · 0 评论 -
hdu2149 Public Sale (巴什博奕)
/* 巴什博奕。 (1)如果m>n,则先行者第一次取n~m之间任意数都能保证其必胜。 (2)如果n%(m+1)==0,则必败。 (3)如果n%(m+1)!=0,则第一次先行者必须拿n%(m+1)个,才能保证必胜。 */ #include int main() { int n,m,i; while(scanf("%d %d",&n,&m)!=EOF) { if(n%(m+1)==0)原创 2013-07-17 15:41:10 · 653 阅读 · 0 评论 -
hdu1907 John (尼姆博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1907 #include int main() { int test,n,num,ans,cnt,i; scanf("%d",&test); while(test--) { ans=cnt=0; scanf("%d",&n); for(i=0;i<n;++i) {原创 2013-08-09 14:00:12 · 592 阅读 · 0 评论 -
hdu2509 Be the Winner (尼姆博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2509 #include int main() { int n,num,ans,cnt,i; while(scanf("%d",&n)!=EOF) { ans=cnt=0; for(i=0;i<n;++i) { scanf("%d",&num); ans^=n原创 2013-08-09 14:10:21 · 917 阅读 · 0 评论 -
hdu1847 Good Luck in CET-4 Everybody! (巴什博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1847 看了别人的题解才明白; 这题如果你是先手,考虑你的必胜态。注意,因为任何正整数都能写成若干个2的整数次方幂之和。由于规定只能取2的某个整数次方幂,只要你留给对手的牌数为3的倍数时,那么你就必赢,因为留下3的倍数时,对手有两种情况: 1:如果轮到对方抓牌时只剩3张牌,对方要么取1张,原创 2013-08-09 14:38:54 · 922 阅读 · 0 评论 -
hdu1527 取石子游戏 (威佐夫博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1527 #include #include int main() { int a,b,c,k; double temp; temp=(1.0+sqrt(5.0))/2.0; while(scanf("%d %d",&a,&b)!=EOF) { if(a<b) {原创 2013-08-14 08:52:13 · 624 阅读 · 0 评论 -
博弈
有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个 人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏 ,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够 取胜。 (一)巴什博奕(Bash Game):只有一堆n个物品,两个人轮流从这堆物品中取物,规 定每次至少取一个,最多取m个。最后取光者得胜。转载 2013-07-17 15:25:52 · 889 阅读 · 0 评论 -
hdu4764 Stone (巴士博弈)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4764 题解:两个人轮流写数,谁先写的数>=n,谁就输;巴士博弈:只有一堆n-1个物品,两个人轮流从这堆物品中取物,规 定每次至少取一个,最多取k个。 #include int main() { int n,k; while(scanf("%d %d",&n,&k))原创 2013-10-03 12:54:50 · 1721 阅读 · 0 评论