摘要:
引言:有一种很有意思的游戏,就是有物体若干堆,可以是火柴棍或是围棋子等等均可。两个人轮流从堆中取物体若干,规定最后取光物体者取胜。这是我国民间很古老的一个游戏,别看这游戏极其简单,却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够取胜。(一)巴什博奕(BashGame):只有一堆n个物品,两个人轮流从这堆物品中取物,规定每次至少取一个,最多取m个。最后取光者得胜。显然,如果n=m+1,那么由于一次最多只能取m个,所以,无论先取者拿走多少个,后取者都能够一次拿走剩余的物品,后者取胜。因此我们发现了如何取胜的法则:如果n=(m+1)r+s,(r为任意自然数,s≤m),那么先取者要拿走s个物品, 阅读全文
摘要:
POJ 1067 取石子游戏大意:有两堆石子,数量为A,B.两个玩家轮流从中取石子,每次可从一堆中取若干颗或从两堆中取相同数目石子,最后取完者为胜,问先取者是否有必胜策略?分析: 比较裸的威佐夫博奕(Wythoff Game) 有黄金分割知,不安全局面(an,bn)满足: an = floor(a*n),bn = floor(b*n); 其中: a = (1+sqrt(5))/2b = (3+sqrt(5))/2 在本题中,已知石子个数A,B,判断A,B是否能满足上述条件,即 若存在n能使得: floor(n*a)==A,floor(n*b)==B (1) 那么便必输,否则必胜 逆推上式,若存 阅读全文
摘要:
POJ 1155 TELEhttp://poj.org/problem?id=1155大意:某电台要广播一场比赛,该电台网络是由N个网点组成的一棵树,其中M个点为客户端,其余点为转发站。客户端i愿支付的钱为pay[i],每一条边需要的花费固定,问电台在保证不亏损的情况下,最多能使多少个客户端接收到信息?广播台所在的节点编号为1分析:树形DP1.user[i].dp[j]表示从转发站i开始计算,满足其子树中j个顾客的最大报酬 分析节点i的孩子节点s a.放弃该孩子s,值不变 b.取该孩子的若干的节点:user[i].dp[j-k]+user[s].dp[k]-cost[i][j](cost[i] 阅读全文
摘要:
http://acm.hdu.edu.cn/showproblem.php?pid=2897HDU 2897 邂逅明下大意:一堆石子共有n个,A,B两人轮流从中取,每次取的石子数必须在[p,q]区间内,若剩下的石子数少于p个,当前取者必须全部取完。最后取石子的人输。给出n,p,q,问先取者是否有必胜策略?Bash博弈的变形假设先取者为A,后取者为B,初始状态下有石子n个,除最后一次每次取的石子个数必须在[p,q]区间内,则:1.若当前石子共有n = (p+q)*r个,则A必胜,必胜策略为: A第一次取q个,以后每次若B取k个,A取(p+q-k)个,如此最后必剩下p个给B,A胜2.若n = (p 阅读全文
摘要:
POJ 1947 Rebuilding Roadshttp://poj.org/problem?id=1947大意:有n个点组成一个树,问至少要删除多少条边才能获得一棵有p个结点的子树?分析:树形DP 满足上诉条件的子树必由某个结点和它的若干子树组成,1.用dp[i][j]表示结点i恰好保留j个子树时至少需要删除的边数,若结点i有子树s a.删除子树s,dp[i][j]+1 b.子树s保留k个结点:dp[s][k-1]+dp[i][j-k] 综上:dp[i][j] =min(dp[i][j]+1,dp[s][k-1]+dp[i][j-k])(0 2 #include 3 constint N 阅读全文