﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-ACM___________________________-随笔分类-ACM ( 博弈 )</title><link>http://www.cppblog.com/MiYu/category/14474.html</link><description>                             ______________白白の屋</description><language>zh-cn</language><lastBuildDate>Fri, 17 Sep 2010 10:34:38 GMT</lastBuildDate><pubDate>Fri, 17 Sep 2010 10:34:38 GMT</pubDate><ttl>60</ttl><item><title>ACM 博弈 只是总结 ( ZZ自奋斗哥 )</title><link>http://www.cppblog.com/MiYu/archive/2010/08/25/124649.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Wed, 25 Aug 2010 03:35:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/25/124649.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/124649.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/25/124649.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/124649.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/124649.html</trackback:ping><description><![CDATA[<span  style="font-family: verdana, 'courier new'; font-size: 14px; line-height: 21px; "><div class="cnblogs_code" style="background-color: rgb(245, 245, 245); font-family: 'Courier New'; font-size: 13px; border-left-color: rgb(204, 204, 204); padding-top: 5px; padding-right: 5px; padding-bottom: 5px; padding-left: 5px; word-break: break-all; overflow-x: auto; overflow-y: auto; "><div><span style="font-family: 'Courier New'; color: rgb(0, 0, 0); "><font color="#800080"><span style="font-family: Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; color: rgb(85, 85, 85); line-height: 17px; font-size: 12px; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">以下是我从网上收集的关于组合博弈的资料汇总：</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">有一种很有意思的游戏，就是有物体若干堆，可以是火柴棍或是围棋子等等均可。两个<br>人轮流从堆中取物体若干，规定最后取光物体者取胜。这是我国民间很古老的一个游戏<br>，别看这游戏极其简单，却蕴含着深刻的数学原理。下面我们来分析一下要如何才能够<br>取胜。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">（一）<strong><span style="font-family: 'Courier New'; color: rgb(255, 0, 0); "><span style="font-family: 'Courier New'; text-decoration: underline; ">巴什博奕（Bash Game）：</span></span></strong><span style="font-family: 'Courier New'; color: rgb(0, 128, 0); ">只有一堆n个物品，两个人轮流从这堆物品中取物，规<br>定每次至少取一个，最多取m个。最后取光者得胜。</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 显然，如果n=m+1，那么由于一次最多只能取m个，所以，无论先取者拿走多少个，<br>后取者都能够一次拿走剩余的物品，后者取胜。因此我们发现了如何取胜的法则：如果<br><span style="font-family: 'Courier New'; color: rgb(0, 128, 0); ">n=（m+1）r+s</span>，（r为任意自然数，s&#8804;m),那么先取者要拿走s个物品，如果后取者拿走<br>k（&#8804;m)个，那么先取者再拿走m+1-k个，结果剩下（m+1）（r-1）个，以后保持这样的<br>取法，那么先取者肯定获胜。总之，要保持给对手留下（m+1）的倍数，就能最后获胜。<br>&nbsp; &nbsp; 这个游戏还可以有一种变相的玩法：两个人轮流报数，每次至少报一个，最多报十<br>个，谁能报到100者胜。<br>（二）<strong><span style="font-family: 'Courier New'; color: rgb(255, 0, 0); "><span style="font-family: 'Courier New'; text-decoration: underline; ">威佐夫博奕（Wythoff Game）：</span></span></strong><span style="font-family: 'Courier New'; color: rgb(0, 128, 0); ">有两堆各若干个物品，两个人轮流从某一堆或同<br>时从两堆中取同样多的物品，规定每次至少取一个，多者不限，最后取光者得胜。<br></span><br>&nbsp; &nbsp; 这种情况下是颇为复杂的。我们用（ak，bk）（ak &#8804; bk ,k=0，1，2，&#8230;,n)表示<br>两堆物品的数量并称其为<strong>局势</strong>，如果甲面对（0，0），那么甲已经输了，这种局势我们<br>称为<strong>奇异局势</strong>。前几个奇异局势是：（0，0）、（1，2）、（3，5）、（4，7）、（6，<br>10）、（8，13）、（9，15）、（11，18）、（12，20）。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 可以看出,a0=b0=0,ak是未在前面出现过的最小自然数,而 bk= ak + k，奇异局势有<br>如下三条性质：</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 1。任何自然数都包含在一个且仅有一个奇异局势中。<br>&nbsp; &nbsp; 由于ak是未在前面出现过的最小自然数，所以有ak &gt; ak-1 ，而 bk= ak + k &gt; ak<br>-1 + k-1 = bk-1 &gt; ak-1 。所以性质1。成立。<br>&nbsp; &nbsp; 2。任意操作都可将奇异局势变为非奇异局势。<br>&nbsp; &nbsp; 事实上，若只改变奇异局势（ak，bk）的某一个分量，那么另一个分量不可能在其<br>他奇异局势中，所以必然是非奇异局势。如果使（ak，bk）的两个分量同时减少，则由<br>于其差不变，且不可能是其他奇异局势的差，因此也是非奇异局势。<br>&nbsp; &nbsp; 3。采用适当的方法，可以将非奇异局势变为奇异局势。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 假设面对的局势是（a,b），若 b = a，则同时从两堆中取走 a 个物体，就变为了<br>奇异局势（0，0）；如果a = ak ，b &gt; bk，那么，取走b&nbsp; &#8211; bk个物体，即变为奇异局<br>势；如果 a = ak ，&nbsp; b &lt; bk ,则同时从两堆中拿走 ak &#8211; ab &#8211; ak个物体,变为奇异局<br>势（ ab &#8211; ak , ab &#8211; ak+ b &#8211; ak）；如果a &gt; ak ，b= ak + k,则从第一堆中拿走多余<br>的数量a &#8211; ak 即可；如果a &lt; ak ，b= ak + k,分两种情况，第一种，a=aj （j &lt; k）<br>,从第二堆里面拿走 b &#8211; bj 即可；第二种，a=bj （j &lt; k）,从第二堆里面拿走 b &#8211; a<br>j 即可。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 从如上性质可知，两个人如果都采用正确操作，那么面对非奇异局势，先拿者必胜<br>；反之，则后拿者取胜。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 那么任给一个局势（a，b），怎样判断它是不是奇异局势呢？我们有如下公式：</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp;&nbsp;<span style="font-family: 'Courier New'; color: rgb(0, 128, 0); ">ak =[k（1+&#8730;5）/2]，bk= ak + k&nbsp; （k=0，1，2，&#8230;,n 方括号表示取整函数)<br></span><br>奇妙的是其中出现了黄金分割数（1+&#8730;5）/2 = 1。618&#8230;,因此,由ak，bk组成的矩形近<br>似为黄金矩形，由于2/（1+&#8730;5）=（&#8730;5-1）/2，可以先求出j=[a（&#8730;5-1）/2]，若a=[<br>j（1+&#8730;5）/2]，那么a = aj，bj = aj + j，若不等于，那么a = aj+1，bj+1 = aj+1<br>+ j + 1，若都不是，那么就不是奇异局势。然后再按照上述法则进行，一定会遇到奇异<br>局势。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">（三）<span style="font-family: 'Courier New'; color: rgb(255, 0, 0); "><strong><span style="font-family: 'Courier New'; text-decoration: underline; ">尼姆博奕（Nimm Game）：</span></strong></span><span style="font-family: 'Courier New'; color: rgb(0, 128, 0); ">有三堆各若干个物品，两个人轮流从某一堆取任意多的<br>物品，规定每次至少取一个，多者不限，最后取光者得胜。</span></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 这种情况最有意思，它与二进制有密切关系，我们用（a，b，c）表示某种局势，首<br>先（0，0，0）显然是奇异局势，无论谁面对奇异局势，都必然失败。第二种奇异局势是<br>（0，n，n），只要与对手拿走一样多的物品，最后都将导致（0，0，0）。仔细分析一<br>下，（1，2，3）也是奇异局势，无论对手如何拿，接下来都可以变为（0，n，n）的情<br>形。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 计算机算法里面有一种叫做按位模2加，也叫做异或的运算，我们用符号（+）表示<br>这种运算。这种运算和一般加法不同的一点是1+1=0。先看（1，2，3）的按位模2加的结<br>果：</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">1 =二进制01<br>2 =二进制10<br>3 =二进制11 （+）<br>———————<br>0 =二进制00 （注意不进位）</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 对于奇异局势（0，n，n）也一样，结果也是0。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 任何奇异局势（a，b，c）都有a（+）b（+）c =0。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">如果我们面对的是一个非奇异局势（a，b，c），要如何变为奇异局势呢？假设 a &lt; b<br>&lt; c,我们只要将 c 变为 a（+）b,即可,因为有如下的运算结果: a（+）b（+）(a（+）<br>b)=(a（+）a)（+）(b（+）b)=0（+）0=0。要将c 变为a（+）b，<span style="font-family: 'Courier New'; color: rgb(0, 128, 0); ">只要从 c中减去 c-（<br>a（+）b）即可。<br></span><br>&nbsp; &nbsp; 例1。（14，21，39），14（+）21=27，39-27=12，所以从39中拿走12个物体即可达<br>到奇异局势（14，21，27）。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 例2。（55，81，121），55（+）81=102，121-102=19，所以从121中拿走19个物品<br>就形成了奇异局势（55，81，102）。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 例3。（29，45，58），29（+）45=48，58-48=10，从58中拿走10个，变为（29，4<br>5，48）。</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp; &nbsp; 例4。我们来实际进行一盘比赛看看：<br>&nbsp; &nbsp; &nbsp; &nbsp; 甲:(7,8,9)-&gt;(1,8,9)奇异局势<br>&nbsp; &nbsp; &nbsp; &nbsp; 乙:(1,8,9)-&gt;(1,8,4)<br>&nbsp; &nbsp; &nbsp; &nbsp; 甲:(1,8,4)-&gt;(1,5,4)奇异局势<br>&nbsp; &nbsp; &nbsp; &nbsp; 乙:(1,5,4)-&gt;(1,4,4)<br>&nbsp; &nbsp; &nbsp; &nbsp; 甲:(1,4,4)-&gt;(0,4,4)奇异局势<br>&nbsp; &nbsp; &nbsp; &nbsp; 乙:(0,4,4)-&gt;(0,4,2)<br>&nbsp; &nbsp; &nbsp; &nbsp; 甲:(0.4,2)-&gt;(0,2,2)奇异局势<br>&nbsp; &nbsp; &nbsp; &nbsp; 乙:(0,2,2)-&gt;(0,2,1)<br>&nbsp; &nbsp; &nbsp; &nbsp; 甲:(0,2,1)-&gt;(0,1,1)奇异局势<br>&nbsp; &nbsp; &nbsp; &nbsp; 乙:(0,1,1)-&gt;(0,1,0)<br>&nbsp; &nbsp; &nbsp; &nbsp; 甲:(0,1,0)-&gt;(0,0,0)奇异局势<br>&nbsp; &nbsp; &nbsp; &nbsp; 甲胜。</p><div id="read_140164" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">取火柴的游戏<br>题目1：今有若干堆火柴，两人依次从中拿取，规定每次只能从一堆中取若干根，&nbsp;<br>可将一堆全取走，但不可不取，最后取完者为胜，求必胜的方法。&nbsp;<br>题目2：今有若干堆火柴，两人依次从中拿取，规定每次只能从一堆中取若干根，&nbsp;<br>可将一堆全取走，但不可不取，最后取完者为负，求必胜的方法。<br>嘿嘿，这个游戏我早就见识过了。小时候用珠算玩这个游戏：第一档拨一个，第二档拨两个，依次直到第五档拨五个。然后两个人就轮流再把棋子拨下来，谁要是最后一个拨谁就赢。有一次暑假看见两个小孩子在玩这个游戏，我就在想有没有一个定论呢。下面就来试着证明一下吧<br>先解决第一个问题吧。<br>定义：若所有火柴数异或为0，则该状态被称为利他态，用字母T表示；否则，&nbsp;<br>为利己态，用S表示。<br>[定理1]：对于任何一个S态，总能从一堆火柴中取出若干个使之成为T态。<br>证明：<br>&nbsp; &nbsp; 若有n堆火柴，每堆火柴有A(i)根火柴数，那么既然现在处于S态，<br>&nbsp; &nbsp; &nbsp; c = A(1) xor A(2) xor &#8230; xor A(n) &gt; 0;<br>&nbsp; &nbsp; 把c表示成二进制，记它的二进制数的最高位为第p位，则必然存在一个A(t),它二进制的第p位也是1。（否则，若所有的A(i)的第p位都是0，这与c的第p位就也为0矛盾）。<br>&nbsp; &nbsp; 那么我们把x = A(t) xor c,则得到x &lt; A(t).这是因为既然A(t)的第p位与c的第p位同为1,那么x的第p位变为0,而高于p的位并没有改变。所以x &lt; A(t).而<br>&nbsp; &nbsp; A(1) xor A(2) xor &#8230; xor x xor &#8230; xor A(n)<br>&nbsp; = A(1) xor A(2) xor &#8230; xor A(t) xor c xor &#8230; xor A(n)<br>&nbsp; = A(1) xor A(2) xor&#8230; xor A(n) xor A(1) xor A(2) xor &#8230; xor A(n)<br>&nbsp; = 0<br>这就是说从A(t)堆中取出 A(t) &#8211; x 根火柴后状态就会从S态变为T态。证毕<br>[定理2]：T态，取任何一堆的若干根，都将成为S态。<br>证明：用反证法试试。<br>&nbsp; &nbsp; &nbsp; 若<br>&nbsp; &nbsp; &nbsp; c = A(1) xor A(2) xor &#8230; xor A(i) xor &#8230; xor A(n) = 0；<br>&nbsp; &nbsp; &nbsp; c&#8217; = A(1) xor A(2) xor &#8230; xor A(i&#8217;) xor c xor &#8230; xor A(n) = 0;<br>&nbsp; &nbsp; &nbsp; 则有<br>c xor c&#8217; = A(1) xor A(2) xor &#8230; xor A(i) xor &#8230; xor A(n) xor A(1) xor A(2) xor &#8230; xor A(i&#8217;) xor c xor &#8230; xor A(n) = A(i) xor A(i&#8217;) =0<br>&nbsp; &nbsp; &nbsp; 进而推出A(i) = A(i&#8217;)，这与已知矛盾。所以命题得证。<br>[定理 3]：S态，只要方法正确，必赢。&nbsp;<br>&nbsp; 最终胜利即由S态转变为T态，任何一个S态，只要把它变为T态，（由定理1，可以把它变成T态。）对方只能把T态转变为S态(定理2)。这样，所有S态向T态的转变都可以有己方控制，对方只能被动地实现由T态转变为S态。故S态必赢。<br>[定理4]：T态，只要对方法正确，必败。&nbsp;<br>&nbsp; 由定理3易得。&nbsp;<br>接着来解决第二个问题。<br>定义：若一堆中仅有1根火柴，则被称为孤单堆。若大于1根，则称为充裕堆。<br>定义：T态中，若充裕堆的堆数大于等于2，则称为完全利他态，用T2表示；若充裕堆的堆数等于0，则称为部分利他态，用T0表示。<br>&nbsp;<br>孤单堆的根数异或只会影响二进制的最后一位，但充裕堆会影响高位（非最后一位）。一个充裕堆，高位必有一位不为0，则所有根数异或不为0。故不会是T态。<br>[定理5]：S0态，即仅有奇数个孤单堆，必败。T0态必胜。&nbsp;<br>证明：<br>S0态，其实就是每次只能取一根。每次第奇数根都由己取，第偶数根都由对&nbsp;<br>方取，所以最后一根必己取。败。同理,&nbsp; T0态必胜#<br>[定理6]：S1态，只要方法正确，必胜。&nbsp;<br>证明：<br>若此时孤单堆堆数为奇数，把充裕堆取完；否则，取成一根。这样，就变成奇数个孤单堆，由对方取。由定理5，对方必输。己必胜。&nbsp; #&nbsp;<br>[定理7]：S2态不可转一次变为T0态。&nbsp;<br>证明：<br>充裕堆数不可能一次由2变为0。得证。&nbsp; #&nbsp;<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">[定理8]：S2态可一次转变为T2态。&nbsp;<br>证明：<br>由定理1，S态可转变为T态，态可一次转变为T态，又由定理6，S2态不可转一次变为T0态，所以转变的T态为T2态。&nbsp; #&nbsp;<br>[定理9]：T2态，只能转变为S2态或S1态。&nbsp;<br>证明：<br>由定理2，T态必然变为S态。由于充裕堆数不可能一次由2变为0，所以此时的S态不可能为S0态。命题得证。&nbsp;<br>[定理10]：S2态，只要方法正确，必胜.&nbsp;<br>证明：<br>方法如下：&nbsp;<br>&nbsp; &nbsp; &nbsp; 1）&nbsp; S2态，就把它变为T2态。（由定理8）&nbsp;<br>&nbsp; &nbsp; &nbsp; 2）&nbsp; 对方只能T2转变成S2态或S1态（定理9）<br>&nbsp; &nbsp; 若转变为S2,&nbsp; 转向1）&nbsp;<br>&nbsp; &nbsp; 若转变为S1,&nbsp; 这己必胜。（定理5）&nbsp;<br>[定理11]：T2态必输。&nbsp;<br>证明：同10。&nbsp;<br>综上所述，必输态有：&nbsp; T2,S0&nbsp;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 必胜态：&nbsp; &nbsp; S2,S1,T0.&nbsp;<br>两题比较：&nbsp;<br>第一题的全过程其实如下：&nbsp;<br>S2-&gt;T2-&gt;S2-&gt;T2-&gt;&nbsp; &#8230;&#8230;&nbsp; -&gt;T2-&gt;S1-&gt;T0-&gt;S0-&gt;T0-&gt;&#8230;&#8230;-&gt;S0-&gt;T0(全0)&nbsp;<br>第二题的全过程其实如下：&nbsp;<br>S2-&gt;T2-&gt;S2-&gt;T2-&gt;&nbsp; &#8230;&#8230;&nbsp; -&gt;T2-&gt;S1-&gt;S0-&gt;T0-&gt;S0-&gt;&#8230;&#8230;-&gt;S0-&gt;T0(全0)&nbsp;<br>下划线表示胜利一方的取法。&nbsp; 是否发现了他们的惊人相似之处。&nbsp;<br>我们不难发现(见加黑部分)，S1态可以转变为S0态（第二题做法），也可以转变为&nbsp;<br>T0（第一题做法）。哪一方控制了S1态，他即可以有办法使自己得到最后一根（转变为&nbsp;<br>T0）,也可以使对方得到最后一根（转变为S0）。&nbsp;<br>&nbsp; 所以，抢夺S1是制胜的关键！&nbsp;<br>&nbsp; 为此，始终把T2态让给对方，将使对方处于被动状态，他早晚将把状态变为S1.</p></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><div id="read_140165" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">推荐HDOJ题目<br><a id="url_1" href="http://acm.hdu.edu.cn/showproblem.php?pid=1907" target="_blank" style="color: rgb(41, 112, 166); text-decoration: none; ">http://acm.hdu.edu.cn/showproblem.php?pid=1907</a><br><a id="url_2" href="http://acm.hdu.edu.cn/showproblem.php?pid=2509" target="_blank" style="color: rgb(41, 112, 166); text-decoration: none; ">http://acm.hdu.edu.cn/showproblem.php?pid=2509</a><br>看完上面的结论，就能顺利解决上面2道了</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><div id="read_140166" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">S-Nim<br><a id="url_3" href="http://acm.hdu.edu.cn/showproblem.php?pid=1536" target="_blank" style="color: rgb(41, 112, 166); text-decoration: none; ">http://acm.hdu.edu.cn/showproblem.php?pid=1536</a><br><a id="url_4" href="http://acm.hdu.edu.cn/showproblem.php?pid=1944" target="_blank" style="color: rgb(41, 112, 166); text-decoration: none; ">http://acm.hdu.edu.cn/showproblem.php?pid=1944</a></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><div id="read_140253" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">博弈算法入门小节 1536 1517 1907<br>小子最近迷途于博弈之中。。。感触颇深。<br>为了让大家能够在学习博弈的时候少走弯路，最重要的也是为了加深自己的影响，温故而知新，特发此贴与大家共勉。<br>学博弈先从概念开始：<br>特别推荐LCY老师的课件：博弈入门。<br>下载地址：<a id="url_5" href="http://acm.hdu.edu.cn/forum/read.php?tid=6875" target="_blank" style="color: rgb(41, 112, 166); text-decoration: none; ">http://acm.hdu.edu.cn/forum/read.php?tid=6875</a><br>这个课件个人认为从博弈的基本思想，一直到解博弈的中心算法做了很好的诠释。但是特别要注意的是。课件后面一部分英语写的讲义是重中之重。小子英语很弱，在这困扰很久。现在为大家大概介绍一下。<br>主要是后继点和SG值的问题:<br>SG值：一个点的SG值就是一个不等于它的后继点的SG的且大于等于零的最小整数。<br>后继点：也就是按照题目要求的走法（比如取石子可以取的数量，方法）能够走一步达到的那个点。<br>具体的有关SG值是怎么运用的希望大家自己多想想。<br>课件后面有一个1536的代码。可以放在后面做做<br>看到这里推荐大家做几道题：1846（最简单的博弈水题）<br>1847（求SG值）<p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">有了上面的知识接下来我们来看看组合博弈（n堆石子）<br>推荐大家看个资料：<br>博弈-取石子游戏(推荐等级五星级)<br><a id="url_6" href="http://acm.hdu.edu.cn/forum/read.php?fid=20&amp;tid=5748" target="_blank" style="color: rgb(41, 112, 166); text-decoration: none; ">http://acm.hdu.edu.cn/forum/read.php?fid=20&amp;tid=5748</a><br><a id="url_7" href="http://hi.baidu.com/netnode/blog/item/30932c2edc7384514fc226ea.html" target="_blank" style="color: rgb(41, 112, 166); text-decoration: none; ">http://hi.baidu.com/netnode/blog/item/30932c2edc7384514fc226ea.html</a><br>这里提出了一个奇异状态的问题。看了这篇文章你会发现异或运算在博弈中使用的妙处。当然这里指出的只是组合博弈中一种特殊情况。<br>王道还是对SG值的求解，但是知道这么一种思路无疑对思维的广度和深度扩展是很有帮助的。<br>ZZ博弈<br><a id="url_8" href="http://acm.hdu.edu.cn/forum/read.php?fid=9&amp;tid=10617" target="_blank" style="color: rgb(41, 112, 166); text-decoration: none; ">http://acm.hdu.edu.cn/forum/read.php?fid=9&amp;tid=10617</a><br>这里介绍了组和博弈的两种大的类型，一种是最后取的是N状态一种是最后取的是P状态，两个状态的解题方法能看懂很有帮助。当然，能够把推导过程理解，吃透无疑是大牛级的做法~小子也佩服的紧~&nbsp; &nbsp;<br>&nbsp; &nbsp; 1536题推荐做做这题，这题前面提醒大家是一个求SG值的题目，题目前面是对异或运算运用在组合博弈问题中的很好的解释。当然题目本身是有所不同的。因为在这里面对取法有所要求。那么这样就回归到了解决博弈问题的王道算法——求SG值上。<br>&nbsp; &nbsp; 有关运用求SG值的博弈题目有： 1850（也可基于奇异状态异或）<br>1848（中和的大斐波那契数列的典型求SG值题）<br>1517（个人认为有点猥琐的题目。。。。在此题上困扰很久。当然搞出来很开心。小子是用比较规矩的求SG值的方法求出来的，但是论坛有人对其推出来了规律，这里佩服一下，大家可以学习一下）<br>1079（更猥琐的题目，对新手要求较高，因为按传统方法需要比较细致的模拟加对边角状态的考虑，同样有人推出来了公式）<br>当你全部看完以上的东西。做完以上的题目的话。。。小子恭喜你~你博弈入门了~~~~<br>&nbsp; &nbsp; 这里小子告诉大家。博弈很强大。学习要耐心~谢谢<br>Current System Time : 2008-12-11 19:16:03</p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; text-indent: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">ACM课作业：<br>1001 Brave Game<br>1002 Good Luck in CET-4 Everybody!<br>1003 Fibonacci again and again<br>1004 Rabbit and Grass<br>1005 Being a Good Boy in Spring Festival<br>1006 Public Sale&nbsp;<br>1007 悼念512汶川大地震遇难同胞——选拔志愿者&nbsp;<br>1008 kiki&#8217;s game&nbsp;<br>1009 Calendar Game&nbsp;<br>1010 A Multiplication Game&nbsp;<br>1011 Digital Deletions&nbsp;<br>1012 S-Nim<br><a id="url_9" href="http://acm.hdu.edu.cn/forum/read.php?tid=11339&amp;fpage=0&amp;toread=&amp;page=1" target="_blank" style="color: rgb(41, 112, 166); text-decoration: none; ">http://acm.hdu.edu.cn/forum/read.php?tid=11339&amp;fpage=0&amp;toread=&amp;page=1</a></p></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">1536的参考代码<br>本部分设定了隐藏,您已回复过了,以下是隐藏的内容<br>Copy code<br>//博弈-基于求SG值<br>//Accepted 1536 578MS 416K 904 B<br>#include&#8221;iostream&#8221;<br>using namespace std;<br>int f[101],sg[10001],k;<br>int mex(int b)<br>{<br>&nbsp; &nbsp; int a[101]={0},i;<br>&nbsp; &nbsp; for(i=0;i&lt;k;i++)<br>&nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; if(b-f<em>&lt;0)//b-f<em>后继点<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br>&nbsp; &nbsp; &nbsp; &nbsp; if(sg[b-f<em>]==-1)<br>&nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sg[b-f<em>]=mex(b-f<em>);<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; a[sg[b-f<em>]]=1;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; for(i=0;i&lt;k;i++)<br>&nbsp; &nbsp; &nbsp; &nbsp; if(!a<em>)<br>&nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return i;<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>}<br>int main()<br>{<br>&nbsp; &nbsp; int i,t,n,s,bead,j;<br>&nbsp; &nbsp; while(cin &gt;&gt; k,k)<br>&nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; for(i=0;i&lt;k;i++)<br>&nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cin &gt;&gt; f<em>;<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; memset(sg,-1,sizeof(sg));<br>&nbsp; &nbsp; &nbsp; &nbsp; for(i=0;i&lt;k;i++)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(j=i+1;j&lt;k;j++)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(f<em>&gt;f[j])<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f<em>+=f[j];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f[j]=f<em>-f[j];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; f<em>-=f[j];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; sg[0]=0;<br>&nbsp; &nbsp; &nbsp; &nbsp; cin &gt;&gt; t;<br>&nbsp; &nbsp; &nbsp; &nbsp; while(t&#8211;)<br>&nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cin &gt;&gt; n;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; s=0;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; while(n&#8211;)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cin &gt;&gt; bead;//该堆的成员个数<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(sg[bead]==-1)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sg[bead]=mex(bead);<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; s=s^sg[bead];<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(s==0)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cout &lt;&lt; &#8220;L&#8221;;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; else<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cout &lt;&lt; &#8220;W&#8221;;<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; cout &lt;&lt; endl;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; return 0;<br>}</em></em></em></em></em></em></em></em></em></em></em></em></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><em></em>&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">1517参考代码<br>本部分设定了隐藏,您已回复过了,以下是隐藏的内容<br>Copy code<br>//博弈-基于求SG值<br>//Accepted 1517 234MS 0K 837 B<br>#include&#8221;iostream&#8221;<br>using namespace std;<br>int main()<br>{<br>&nbsp; &nbsp; __int64 a[7000]={1},min,n;<br>&nbsp; &nbsp; int p[10],sg[7000],i,j,k;<br>&nbsp; &nbsp; for(i=2;i&lt;10;p<em>=0,i++);<br>&nbsp; &nbsp; for(i=1;i&lt;7000;i++)<br>&nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; for(j=2,min=-1;j&lt;10;j++)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(min==-1||a[p[j]]*j&lt;a[p[min]]*min)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; min=j;<br>&nbsp; &nbsp; &nbsp; &nbsp; a<em>=a[p[min]]*min;<br>&nbsp; &nbsp; &nbsp; &nbsp; min=a[p[min]]*min;<br>&nbsp; &nbsp; &nbsp; &nbsp; if(a<em>&gt;=5000000000)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br>&nbsp; &nbsp; &nbsp; &nbsp; for(j=2;j&lt;10;j++)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(a[p[j]]*j==min)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; p[j]++;<br>&nbsp; &nbsp; }//从小到大求出所有乘积<br>&nbsp; &nbsp; while(scanf(&#8220;%I64d&#8221;,&amp;n)!=EOF)<br>&nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; for(i=0;i&lt;7000;i++)<br>&nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sg<em>=0;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(a<em>&gt;=n)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; for(j=i-1;a[j]*9&gt;=n&amp;&amp;j&gt;=0;j&#8211;)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sg[j]=1;<br>&nbsp; &nbsp; &nbsp; &nbsp; while(j&gt;=0)<br>&nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; for(k=j+1;k&lt;i&amp;&amp;a[j]*9&gt;=a[k];k++)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(a[k]%a[j]==0&amp;&amp;sg[k]==0)<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; sg[j]=1;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; j&#8211;;<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; puts(sg[0]?&#8221;Stan wins.&#8221;:&#8221;Ollie wins.&#8221;);<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; return 0;<br>}<br>这里感谢shǎ崽同学的一段代码让小子学会了puts的妙用</em></em></em></em></em></div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><em></em>&nbsp;</div><div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "><div id="read_140256" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; ">1907参考代码<br>本部分设定了隐藏,您已回复过了,以下是隐藏的内容<br>#include&#8221;iostream&#8221;<br>using namespace std;<br>int main()<br>{<br>&nbsp; &nbsp; int temp,t,n,s,x,i;<br>&nbsp; &nbsp; cin &gt;&gt; t;<br>&nbsp; &nbsp; while(t&#8211;)<br>&nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; cin &gt;&gt; n;<br>&nbsp; &nbsp; &nbsp; &nbsp; for(i=s=temp=0;i&lt;n;i++)<br>&nbsp; &nbsp; &nbsp; &nbsp; {<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cin &gt;&gt; x;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(x&gt;1)&nbsp; &nbsp; temp=1;<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; s^=x;<br>&nbsp; &nbsp; &nbsp; &nbsp; }<br>&nbsp; &nbsp; &nbsp; &nbsp; if((s&amp;&amp;temp)||(!s&amp;&amp;!temp))<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cout &lt;&lt; &#8220;John&#8221; &lt;&lt; endl;<br>&nbsp; &nbsp; &nbsp; &nbsp; else<br>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cout &lt;&lt; &#8220;Brother&#8221; &lt;&lt; endl;<br>&nbsp; &nbsp; }<br>&nbsp; &nbsp; return 0;<br>}</div></div></div></div></div></div></div><hr><div style="margin-top: 16px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-style: italic; ">Tanky Woo原创，转载请注明： 转载自<a href="http://www.wutianqi.com/" style="color: rgb(41, 112, 166); text-decoration: none; ">Tanky Woo</a><br></div></span></font></span></div></div><p style="margin-top: 5px; margin-right: auto; margin-bottom: 5px; margin-left: auto; text-indent: 0px; ">&nbsp;</p></span>
<img src ="http://www.cppblog.com/MiYu/aggbug/124649.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-25 11:35 <a href="http://www.cppblog.com/MiYu/archive/2010/08/25/124649.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ 2147 HDU 2147 kiki's game ACM 2147 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/10/122978.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Tue, 10 Aug 2010 12:48:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/10/122978.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122978.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/10/122978.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122978.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122978.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=2147">http://acm.hdu.edu.cn/showproblem.php?pid=2147</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">kiki</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">s&nbsp;game</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000"><br>Time&nbsp;Limit:&nbsp;</span><span style="COLOR: #000000">5000</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">&nbsp;MS&nbsp;(Java</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory&nbsp;Limit:&nbsp;</span><span style="COLOR: #000000">40000</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">&nbsp;K&nbsp;(Java</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Others)<br>Total&nbsp;Submission(s):&nbsp;</span><span style="COLOR: #000000">1806</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Accepted&nbsp;Submission(s):&nbsp;</span><span style="COLOR: #000000">1055</span><span style="COLOR: #000000"><br><br><br>Problem&nbsp;Description<br>Recently&nbsp;kiki&nbsp;has&nbsp;nothing&nbsp;to&nbsp;</span><span style="COLOR: #0000ff">do</span><span style="COLOR: #000000">.&nbsp;While&nbsp;she&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;bored,&nbsp;an&nbsp;idea&nbsp;appears&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;his&nbsp;mind,&nbsp;she&nbsp;just&nbsp;playes&nbsp;the&nbsp;checkerboard&nbsp;game.The&nbsp;size&nbsp;of&nbsp;the&nbsp;chesserboard&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;n</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">m.First&nbsp;of&nbsp;all,&nbsp;a&nbsp;coin&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;placed&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;the&nbsp;top&nbsp;right&nbsp;corner(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,m).&nbsp;Each&nbsp;time&nbsp;one&nbsp;people&nbsp;can&nbsp;move&nbsp;the&nbsp;coin&nbsp;into&nbsp;the&nbsp;left,&nbsp;the&nbsp;underneath&nbsp;or&nbsp;the&nbsp;left</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">underneath&nbsp;blank&nbsp;space.The&nbsp;person&nbsp;who&nbsp;can</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">t&nbsp;make&nbsp;a&nbsp;move&nbsp;will&nbsp;lose&nbsp;the&nbsp;game.&nbsp;kiki&nbsp;plays&nbsp;it&nbsp;with&nbsp;ZZ.The&nbsp;game&nbsp;always&nbsp;starts&nbsp;with&nbsp;kiki.&nbsp;If&nbsp;both&nbsp;play&nbsp;perfectly,&nbsp;who&nbsp;will&nbsp;win&nbsp;the&nbsp;game?</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">&nbsp;<br><br>Input<br>Input&nbsp;contains&nbsp;multiple&nbsp;test&nbsp;cases.&nbsp;Each&nbsp;line&nbsp;contains&nbsp;two&nbsp;integer&nbsp;n,&nbsp;m&nbsp;(</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">n,m</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">2000</span><span style="COLOR: #000000">).&nbsp;The&nbsp;input&nbsp;</span><span style="COLOR: #0000ff">is</span><span style="COLOR: #000000">&nbsp;terminated&nbsp;when&nbsp;n</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;and&nbsp;m</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">.<br><br>&nbsp;<br><br>Output<br>If&nbsp;kiki&nbsp;wins&nbsp;the&nbsp;game&nbsp;printf&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Wonderful!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">What&nbsp;a&nbsp;pity!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">.<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>What&nbsp;a&nbsp;pity</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>Wonderful</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>Wonderful</span><span style="COLOR: #000000">!</span></div>
<br>题目分析:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 12pt; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px">一直WA , 分析也没分析出来 , 百度了一下别人的解题报告后.............我承认....我被征服了.....................<br><br>分析如下:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span style="TEXT-ALIGN: center; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 22px; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(55,42,24); FONT-SIZE: 14px" class=Apple-style-span>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">P点：就是P个石子的时候，对方拿可以赢(自己输的)</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">N点：就是N个石子的时候，自己拿可以赢</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">现在关于P,N的求解有三个规则</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">（1）：最终态都是P</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">（2）：按照游戏规则，到达当前态的前态都是N的话，当前态是P</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">（3）：按照游戏规则，到达当前态的前态至少有一个P的话，当前态是N</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">题意：</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">在一个m*n的棋盘内，从(1,m)点出发，每次可以进行的移动是：左移一，下移一，左下移一。然后kiki每次先走，判断kiki时候会赢（对方无路可走的时候）。</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">我们可以把PN状态的点描绘出来：：</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 src="http://www.cppblog.com/images/cppblog_com/miyu/3422454241826536201.jpg"><br><br><span style="TEXT-ALIGN: center; WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 22px; FONT-FAMILY: Arial, Helvetica, sans-serif; COLOR: rgb(55,42,24); FONT-SIZE: 14px" class=Apple-style-span></p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">这些点的描绘有一个程序：：</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">【</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">#include&lt;iostream&gt;<br style="LINE-HEIGHT: 22px">using namespace std;<br style="LINE-HEIGHT: 22px">bool map[2001][2001];//1 P 0 N;<br style="LINE-HEIGHT: 22px">int main(){<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int i,j,k;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[1][1]=1;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=2;i&lt;=2000;i++)<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(map[i-1][1])<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[i][1]=0;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else map[i][1]=1;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=2;j&lt;i;j++){<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!map[i][j-1]&amp;&amp;!map[i-1][j-1]&amp;&amp;!map[i-1][j])<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[i][j]=1;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else map[i][j]=0;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(map[1][i-1])<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[1][i]=0;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else map[1][i]=1;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=2;j&lt;i;j++){<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!map[j-1][i]&amp;&amp;!map[j-1][i-1]&amp;&amp;!map[j][i-1])<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[j][i]=1;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else map[j][i]=0;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!map[i][i-1]&amp;&amp;!map[i-1][i-1]&amp;&amp;!map[i-1][i])<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; map[i][i]=1;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else map[i][i]=0;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int M,N;<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(i=1;i&lt;=10;i++){<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j=1;j&lt;=10;j++)<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%c ",map[i][j]?'P':'N');<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("\n");<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(scanf("%d%d",&amp;M,&amp;N)&amp;&amp;M&amp;&amp;N){<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(map[M][N]) printf("What a pity!\n");<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else printf("Wonderful!\n");<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br style="LINE-HEIGHT: 22px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return 0;<br style="LINE-HEIGHT: 22px">}</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 22px; TEXT-INDENT: 2em; MARGIN: 0px 0px 10px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">】</p>
</span></span></span></span></div>
<br>具体代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,m;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;cin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;n&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;m&nbsp;,&nbsp;n&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;n</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&amp;&amp;</span><span style="COLOR: #000000">&nbsp;m&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">What&nbsp;a&nbsp;pity!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Wonderful!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>}<br></span></div>
</span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-10 20:48 <a href="http://www.cppblog.com/MiYu/archive/2010/08/10/122978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 2149 Public Sale  ACM 2149 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122863.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 14:22:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122863.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122863.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122863.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122863.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122863.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=2149">http://acm.hdu.edu.cn/showproblem.php?pid=2149</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Public&nbsp;Sale<br><br>Time&nbsp;Limit:&nbsp;</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">&nbsp;MS&nbsp;(Java</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory&nbsp;Limit:&nbsp;</span><span style="COLOR: #000000">32768</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">32768</span><span style="COLOR: #000000">&nbsp;K&nbsp;(Java</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Others)<br>Total&nbsp;Submission(s):&nbsp;</span><span style="COLOR: #000000">719</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Accepted&nbsp;Submission(s):&nbsp;</span><span style="COLOR: #000000">419</span><span style="COLOR: #000000"><br><br><br>Problem&nbsp;Description<br>虽然不想，但是现实总归是现实，Lele始终没有逃过退学的命运，因为他没有拿到奖学金。现在等待他的，就是像FarmJohn一样的农田生涯。<br><br>要种田得有田才行，Lele听说街上正在举行一场别开生面的拍卖会，拍卖的物品正好就是一块20亩的田地。于是，Lele带上他的全部积蓄，冲往拍卖会。<br><br>后来发现，整个拍卖会只有Lele和他的死对头Yueyue。<br><br>通过打听，Lele知道这场拍卖的规则是这样的：刚开始底价为0，两个人轮流开始加价，不过每次加价的幅度要在1～N之间，当价格大于或等于田地的成本价&nbsp;M&nbsp;时，主办方就把这块田地卖给这次叫价的人。<br><br>Lele和Yueyue虽然考试不行，但是对拍卖却十分精通，而且他们两个人都十分想得到这块田地。所以他们每次都是选对自己最有利的方式进行加价。<br><br>由于Lele字典序比Yueyue靠前，所以每次都是由Lele先开始加价，请问，第一次加价的时候，<br>Lele要出多少才能保证自己买得到这块地呢？<br>&nbsp;<br><br>Input<br>本题目包含多组测试，请处理到文件结束(EOF)。每组测试占一行。<br>每组测试包含两个整数M和N(含义见题目描述，</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">N，M</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">1100</span><span style="COLOR: #000000">)<br>&nbsp;<br><br>Output<br>对于每组数据，在一行里按递增的顺序输出Lele第一次可以加的价。两个数据之间用空格隔开。<br>如果Lele在第一次无论如何出价都无法买到这块土地，就输出</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">none</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br>none<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span></div>
<br>题目分析:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px">简单的Bash 博弈. 按题意控制好 输出 就行了 ,&nbsp;&nbsp;&nbsp; 不清楚请点击<a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html">&nbsp; 博弈入门</a> </div>
</span><br>代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,m;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">m,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n&nbsp;)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;EOF&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;m&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;(&nbsp;n&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">none</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;n&nbsp;</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">&nbsp;m&nbsp;)&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;m;&nbsp;i&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;n;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;i&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;m&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,i&nbsp;);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;putchar&nbsp;(&nbsp;</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">\n</span><span style="COLOR: #000000">'</span><span style="COLOR: #000000">&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;m&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;(&nbsp;n&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;)&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>}<br></span></div>
<img src ="http://www.cppblog.com/MiYu/aggbug/122863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 22:22 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122863.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 2188 悼念512汶川大地震遇难同胞——选拔志愿者 ACM 2188 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122851.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 13:37:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122851.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122851.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122851.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122851.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122851.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=2188">http://acm.hdu.edu.cn/showproblem.php?pid=2188</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">悼念512汶川大地震遇难同胞——选拔志愿者<br><br>Time&nbsp;Limit:&nbsp;</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">&nbsp;MS&nbsp;(Java</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Others)&nbsp;&nbsp;&nbsp;&nbsp;Memory&nbsp;Limit:&nbsp;</span><span style="COLOR: #000000">32768</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">32768</span><span style="COLOR: #000000">&nbsp;K&nbsp;(Java</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">Others)<br>Total&nbsp;Submission(s):&nbsp;</span><span style="COLOR: #000000">1337</span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Accepted&nbsp;Submission(s):&nbsp;</span><span style="COLOR: #000000">716</span><span style="COLOR: #000000"><br><br><br>Problem&nbsp;Description<br>对于四川同胞遭受的灾难，全国人民纷纷伸出援助之手，几乎每个省市都派出了大量的救援人员，这其中包括抢险救灾的武警部队，治疗和防疫的医护人员，以及进行心理疏导的心理学专家。根据要求，我校也有一个奔赴灾区救灾的名额，由于广大师生报名踊跃，学校不得不进行选拔来决定最后的人选。经过多轮的考核，形势逐渐明朗，最后的名额将在&#8220;林队&#8221;和&#8220;徐队&#8221;之间产生。但是很巧合，2个人的简历几乎一模一样，这让主持选拔的8600很是为难。无奈，他决定通过捐款来决定两人谁能入选。<br>选拔规则如下：<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">、最初的捐款箱是空的；<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">、两人轮流捐款，每次捐款额必须为正整数，并且每人每次捐款最多不超过m元(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">m</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">)。<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">、最先使得总捐款额达到或者超过n元（</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">10000</span><span style="COLOR: #000000">）的一方为胜者，则其可以亲赴灾区服务。<br>我们知道，两人都很想入选志愿者名单，并且都是非常聪明的人，假设林队先捐，请你判断谁能入选最后的名单？<br>&nbsp;<br><br>Input<br>输入数据首先包含一个正整数C，表示包含C组测试用例，然后是C行数据，每行包含两个正整数n，m，n和m的含义参见上面提到的规则。<br>&nbsp;<br><br>Output<br>对于每组测试数据，如果林队能入选，请输出字符串</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Grass</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">，&nbsp;如果徐队能入选，请输出字符串</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Rabbit</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">，每个实例的输出占一行。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">11</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>Grass<br>Rabbit<br></span></div>
<br><br>题目分析:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px">非常非常标准的 bash 博弈, 只要把 捐款看成取款就行了, 谁最后取光钱谁就赢.&nbsp; 更多资料请点击&nbsp; <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html">博弈入门</a></div>
</span><br>代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;T;<br>&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;T&nbsp;</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;n,m;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">n,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">m&nbsp;);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;n&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;m&nbsp;)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Grass</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Rabbit</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>}<br></span></div>
<img src ="http://www.cppblog.com/MiYu/aggbug/122851.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 21:37 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122851.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 1847 Good Luck in CET-4 Everybody! ACM 1847 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122845.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 13:27:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122845.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122845.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122845.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122845.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122845.html</trackback:ping><description><![CDATA[<span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: simsun; COLOR: rgb(70,70,70); FONT-SIZE: 14px" class=Apple-style-span><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br></span><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=1847">http://acm.hdu.edu.cn/showproblem.php?pid=1847</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>大学英语四级考试就要来临了，你是不是在紧张的复习？也许紧张得连短学期的ACM都没工夫练习了，反正我知道的Kiki和Cici都是如此。当然，作为在考场浸润了十几载的当代大学生，Kiki和Cici更懂得考前的放松，所谓&#8220;张弛有道&#8221;就是这个意思。这不，Kiki和Cici在每天晚上休息之前都要玩一会儿扑克牌以放松神经。<br>&#8220;升级&#8221;？&#8220;双扣&#8221;？&#8220;红五&#8221;？还是&#8220;斗地主&#8221;？<br>当然都不是！那多俗啊</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000"><br>作为计算机学院的学生，Kiki和Cici打牌的时候可没忘记专业，她们打牌的规则是这样的：<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">、&nbsp;&nbsp;总共n张牌;<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">、&nbsp;&nbsp;双方轮流抓牌；<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">、&nbsp;&nbsp;每人每次抓牌的个数只能是2的幂次（即：</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">，</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">，</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">，</span><span style="COLOR: #000000">8</span><span style="COLOR: #000000">，</span><span style="COLOR: #000000">16</span><span style="COLOR: #000000">&#8230;）<br></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">、&nbsp;&nbsp;抓完牌，胜负结果也出来了：最后抓完牌的人为胜者；<br>假设Kiki和Cici都是足够聪明（其实不用假设，哪有不聪明的学生</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">），并且每次都是Kiki先抓牌，请问谁能赢呢？<br>当然，打牌无论谁赢都问题不大，重要的是马上到来的CET</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">4能有好的状态。<br><br>Good&nbsp;luck&nbsp;</span><span style="COLOR: #0000ff">in</span><span style="COLOR: #000000">&nbsp;CET</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;everybody</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Input<br>输入数据包含多个测试用例，每个测试用例占一行，包含一个整数n（</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">）。<br>&nbsp;<br><br>Output<br>如果Kiki能赢的话，请输出&#8220;Kiki&#8221;，否则请输出&#8220;Cici&#8221;，每个实例的输出占一行。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>Kiki<br>Cici</span></div>
<br>题目分析:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>首先我们可以想到在面对3的时候是必败局，谁面对3时无论拿多少都会败 !&nbsp;&nbsp;&lt;---这是关键<br>那么就要尽量造成这样的局势给对方，因为任何不是3的倍数的数加1或2都可以变成3的倍数，<br>同理减去1或2也可以变成3的倍数，也就是说假设目前的个数不是3的倍数，那我肯定能把它<br>拿成3的倍数，比如现在是11个，那我拿走2个就变成9，这样就造成对方为3的倍数局势，那<br>么对方拿m个我都可以通过拿1或者2使总共一轮拿的数目成为3的倍数，这样就会有两种情况:<br></span><span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;1</span><span style="COLOR: #000000">.刚好拿完.<br>&nbsp;&nbsp;&nbsp;2.剩下的还有3的倍数个，那继续;<br>所以这样拿下去必胜</span></div>
<br>代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">using</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">namespace</span><span style="COLOR: #000000">&nbsp;std;<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;cin&nbsp;</span><span style="COLOR: #000000">&gt;&gt;</span><span style="COLOR: #000000">&nbsp;N&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;N&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Kiki</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Cici</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>}<br></span></div>
</span></span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122845.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 21:27 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122845.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 1849 Rabbit and Grass ACM 1849 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122844.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 13:09:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122844.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122844.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122844.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122844.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122844.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=1849">http://acm.hdu.edu.cn/showproblem.php?pid=1849</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>大学时光是浪漫的，女生是浪漫的，圣诞更是浪漫的，但是Rabbit和Grass这两个大学女生在今年的圣诞节却表现得一点都不浪漫：不去逛商场，不去逛公园，不去和AC男约会，两个人竟然猫在寝食下棋&#8230;&#8230;<br>说是下棋，其实只是一个简单的小游戏而已，游戏的规则是这样的：<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">、&nbsp;&nbsp;棋盘包含1</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">n个方格，方格从左到右分别编号为0，</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">，</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">，&#8230;，n</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">；<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">、&nbsp;&nbsp;m个棋子放在棋盘的方格上，方格可以为空，也可以放多于一个的棋子；<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">、&nbsp;&nbsp;双方轮流走棋；<br></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">、&nbsp;&nbsp;每一步可以选择任意一个棋子向左移动到任意的位置（可以多个棋子位于同一个方格），当然，任何棋子不能超出棋盘边界；<br></span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">、&nbsp;&nbsp;如果所有的棋子都位于最左边（即编号为0的位置），则游戏结束，并且规定最后走棋的一方为胜者。<br><br>对于本题，你不需要考虑n的大小（我们可以假设在初始状态，棋子总是位于棋盘的适当位置）。下面的示意图即为一个1</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">15的棋盘，共有6个棋子，其中，编号8的位置有两个棋子。<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img border=0 src="http://www.cppblog.com/images/cppblog_com/miyu/C101-1004-1.jpg"><br><br><br>大家知道，虽然偶尔不够浪漫，但是Rabbit和Grass都是冰雪聪明的女生，如果每次都是Rabbit先走棋，请输出最后的结果。<br>&nbsp;<br><br>Input<br>输入数据包含多组测试用例，每个测试用例占二行，首先一行包含一个整数m（</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">m</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">），表示本测试用例的棋子数目，紧跟着的一行包含m个整数Ki(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&#8230;m;&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">Ki</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">)，分别表示m个棋子初始的位置，m</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0则结束输入。<br>&nbsp;<br><br>Output<br>如果Rabbit能赢的话，请输出&#8220;Rabbit&nbsp;Win</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&#8221;，否则请输出&#8220;Grass&nbsp;Win</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000">&#8221;，每个实例的输出占一行。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>Rabbit&nbsp;Win</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br>Grass&nbsp;Win</span><span style="COLOR: #000000">!</span><span style="COLOR: #000000"><br></span></div>
<br>题目分析 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>标准 的 nim 博弈 问题, 不要想复杂了 .&nbsp;&nbsp; 因为只能往左移, 所以可以将 初始的每个棋子的位置看成一个堆, 比如说, 1个棋子在 n-1格, 那么就代表这个堆有 n-1个数<br>左移1格,就是取走一个, 所以有 m 棋子就代表有m个堆, 全部到0就是取完了............&nbsp;&nbsp;&nbsp; 更具体的 nim 博弈介绍请点击&nbsp; &lt;&lt;&nbsp;<a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html">博弈入门</a>&nbsp;&gt;&gt;&nbsp; </span></div>
<br>代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;heap[</span><span style="COLOR: #000000">1001</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;T;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T&nbsp;),&nbsp;T&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;res&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;,&nbsp;nCount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;T;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,heap&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;i&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;</span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000">&nbsp;heap[i];&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;res&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Grass&nbsp;Win!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">Rabbit&nbsp;Win!</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>}<br></span></div>
</span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122844.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 21:09 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122844.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 1846 Brave Game ACM 1846 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122836.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 12:35:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122836.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122836.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122836.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122836.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122836.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=1846">http://acm.hdu.edu.cn/showproblem.php?pid=1846</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>十年前读大学的时候，中国每年都要从国外引进一些电影大片，其中有一部电影就叫《勇敢者的游戏》（英文名称：Zathura），一直到现在，我依然对于电影中的部分电脑特技印象深刻。<br>今天，大家选择上机考试，就是一种勇敢（brave）的选择；这个短学期，我们讲的是博弈（game）专题；所以，大家现在玩的也是&#8220;勇敢者的游戏&#8221;，这也是我命名这个题目的原因。<br>当然，除了&#8220;勇敢&#8221;，我还希望看到&#8220;诚信&#8221;，无论考试成绩如何，希望看到的都是一个真实的结果，我也相信大家一定能做到的</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000"><br><br>各位勇敢者要玩的第一个游戏是什么呢？很简单，它是这样定义的：<br></span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">、&nbsp;&nbsp;本游戏是一个二人游戏;<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">、&nbsp;&nbsp;有一堆石子一共有n个；<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000">、&nbsp;&nbsp;两人轮流进行;<br></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">、&nbsp;&nbsp;每走一步可以取走1&#8230;m个石子；<br></span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">、&nbsp;&nbsp;最先取光石子的一方为胜；<br><br>如果游戏的双方使用的都是最优策略，请输出哪个人能赢。<br>&nbsp;<br><br>Input<br>输入数据首先包含一个正整数C(C</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">)，表示有C组测试数据。<br>每组测试数据占一行，包含两个整数n和m（</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">n,m</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">），n和m的含义见题目描述。<br>&nbsp;<br><br>Output<br>如果先走的人能赢，请输出&#8220;first&#8221;，否则请输出&#8220;second&#8221;，每个实例的输出占一行。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">23</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">4</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">3</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>first<br>second<br></span></div>
<br>题目分析:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: simsun; COLOR: rgb(70,70,70); FONT-SIZE: 14px" class=Apple-style-span>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 21px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: normal; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; WORD-BREAK: normal; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px">巴什博弈，一个人拿1～m个，那谁面对m+1的局势的的时候则必败，很明显，先拿的就是要造这个局势,如果n是(m+1)*r+s(k为任意，s&lt;m+1),那么很明显先拿的拿掉s后，然后无论下一个拿多少你都可以保证你拿完后都是拿了m+1个，这样后拿的必定面对必败局势，比如23 2，23=（3&#215;7）+2；那我第一次拿掉2，然后无论每次第二个拿几我都可以使得这轮总共拿3，然后他必定会面对3这个局势，然后我就必胜，那什么时候必败呢，很明显如果我面对的是（m+1）的倍数的局势就必败。<br>puts ( n % ( 1 + m ) != 0 ? "first" : "second" );</p>
<p style="PADDING-BOTTOM: 0px; LINE-HEIGHT: 21px; BORDER-RIGHT-WIDTH: 0px; LIST-STYLE-TYPE: none; MARGIN: 0px 0px 5px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; WORD-WRAP: normal; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; WORD-BREAK: normal; BORDER-LEFT-WIDTH: 0px; PADDING-TOP: 0px">结果竟然被这题给阴了....while(scanf("%d",&amp;c)!=EOF) --&gt; 结果WA, YM<br>然后改成&nbsp; scanf("%d",&amp;c)&nbsp; 居然 AC 了. ...................悲剧～～～</p>
</span></span></div>
<br>代码如下 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>#include &lt;iostream&gt;<br>int main ()<br>{<br>&nbsp;&nbsp;&nbsp; int T;<br>&nbsp;&nbsp;&nbsp; scanf ( "%d",&amp;T );<br>&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while ( T -- )<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int n,m;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; scanf ( "%d%d", &amp;n, &amp;m ); <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; puts ( n % ( 1 + m ) != 0 ? "first" : "second" );&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } <br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return 0; <br>}<br></span></div>
</span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122836.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 20:35 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122836.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 1850 Being a Good Boy in Spring Festival ACM 1850 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122830.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 12:04:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122830.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122830.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122830.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122830.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122830.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=1850">http://acm.hdu.edu.cn/showproblem.php?pid=1850</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>一年在外&nbsp;父母时刻牵挂<br>春节回家&nbsp;你能做几天好孩子吗<br>寒假里尝试做做下面的事情吧<br><br>陪妈妈逛一次菜场<br>悄悄给爸爸买个小礼物<br>主动地&nbsp;强烈地&nbsp;要求洗一次碗<br>某一天早起&nbsp;给爸妈用心地做回早餐<br><br>如果愿意&nbsp;你还可以和爸妈说<br>咱们玩个小游戏吧&nbsp;ACM课上学的呢～<br><br>下面是一个二人小游戏：桌子上有M堆扑克牌；每堆牌的数量分别为Ni(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&#8230;M)；两人轮流进行；每走一步可以任意选择一堆并取走其中的任意张牌；桌子上的扑克全部取光，则游戏结束；最后一次取牌的人为胜者。<br>现在我们不想研究到底先手为胜还是为负，我只想问大家：<br>——&#8220;先手的人如果想赢，第一步有几种选择呢？&#8221;<br>&nbsp;<br><br>Input<br>输入数据包含多个测试用例，每个测试用例占2行，首先一行包含一个整数M(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">M</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">100</span><span style="COLOR: #000000">)，表示扑克牌的堆数，紧接着一行包含M个整数Ni(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">Ni</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">1000000</span><span style="COLOR: #000000">，i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">&#8230;M)，分别表示M堆扑克的数量。M为0则表示输入数据的结束。<br>&nbsp;<br><br>Output<br>如果先手的人能赢，请输出他第一步可行的方案数，否则请输出0，每个实例的输出占一行。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">3</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">5</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">9</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">0</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br></span><span style="COLOR: #000000">1</span></div>
<br>题目分析 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, 'ms song', 宋体, Arial, 微软雅黑, Helvetica, sans-serif; FONT-SIZE: 14px" class=Apple-style-span>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>一.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果<span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="TEXT-ALIGN: left; LINE-HEIGHT: 21px; FONT-FAMILY: verdana, 'ms song', 宋体, Arial, 微软雅黑, Helvetica, sans-serif; FONT-SIZE: 14px" class=Apple-style-span>a1^a2^a3^...^an=0 ( 即 : nim-sum=0 ) , 说明先手没有必赢策略, 方法数肯定为 0;<br>二.</span></span></p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;假设先手的人有必赢策略。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;问题则转化为=&gt;在任意一堆拿任意K张牌，并且剩下所有堆的nim-sum=0(P-position)的方案总数。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;现在我们先看一个例子(5,7,9)，并假设从第一堆取任意K张牌。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;排除第一堆牌的nim-sum为 7^9=14</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0111</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;^1001</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-------</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1110</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;如果要使所有堆的nim-sum=0成立，则第一堆取掉K张以后必定为1110，因为X^X=0。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;所以要观察 5-k=14 k&gt;0 成立,此例子(在第一堆取任意K张牌)明显的不成立。但并不代表在第二或第三堆取任意K张牌的解不成立。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;现在看第二个例子(15,7,9)，并假设从第一堆取任意K张牌。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;排队第一堆牌的nim-sum为7^9=14，和第一个例子相同，所以问题变为观察 15-k=14 k&gt;0 是否成立。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;当然这个例子是成立的。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">三.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;总结得出：</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;在任意一堆拿任意K张牌，并且所有堆的nim-sum=0 成立的条件为：排除取掉K张牌的那一堆的nim-sum必须少于该堆牌上的数量(例子二)，否则不能在此堆上取任意K张牌使所有堆的nim-sum=0成立(例子一)。</p>
<p style="PADDING-BOTTOM: 0px; TEXT-INDENT: 0px; MARGIN: 5px auto; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; PADDING-TOP: 0px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;故总方案数为 ( 在任意一堆拿任意K张牌，并且所有堆的nim-sum=0 成立 ) 的总数。</p>
</span></span></div>
<br>代码如下 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;heap[</span><span style="COLOR: #000000">101</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;T;<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">T&nbsp;),&nbsp;T&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;res&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;,&nbsp;nCount&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;T;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,heap&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;i&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res&nbsp;</span><span style="COLOR: #000000">^=</span><span style="COLOR: #000000">&nbsp;heap[i];&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;res&nbsp;</span><span style="COLOR: #000000">==</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">continue</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;cmp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">&nbsp;(&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;i&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;T;&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;i&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmp&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;res&nbsp;</span><span style="COLOR: #000000">^</span><span style="COLOR: #000000">&nbsp;heap[i];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">&nbsp;(&nbsp;cmp&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">&nbsp;heap[i]&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;nCount&nbsp;</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,nCount&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;<br>}<br></span></div>
</span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122830.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 20:04 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122830.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDOJ HDU 2897 邂逅明下 ACM 2897 IN HDU </title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122756.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 03:59:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122756.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122756.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122756.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122756.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122756.html</trackback:ping><description><![CDATA[<span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a><br><br>题目地址:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://acm.hdu.edu.cn/showproblem.php?pid=2897">http://acm.hdu.edu.cn/showproblem.php?pid=2897</a><br>题目描述:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000">Problem&nbsp;Description<br>当日遇到月，于是有了明。当我遇到了你，便成了侣。<br>那天，日月相会，我见到了你。而且，大地失去了光辉，你我是否成侣？这注定是个凄美的故事。（以上是废话）<br>小t和所有世俗的人们一样，期待那百年难遇的日食。驻足街头看天，看日月渐渐走近，小t的脖子那个酸呀（他坚持这个姿势已经有半个多小时啦）。他低下仰起的头，环顾四周。忽然发现身边竟站着位漂亮的mm。天渐渐暗下，这mm在这街头竟然如此耀眼，她是天使吗？站着小t身边的天使。<br>小t对mm惊呼：&#8220;缘分呐</span><span style="COLOR: #000000">~~</span><span style="COLOR: #000000">&#8221;。mm却毫不含糊：&#8220;是啊，500年一遇哦！&#8221;（此后省略5000字&#8230;.）<br>小t赶紧向mm要联系方式，可mm说：&#8220;我和你玩个游戏吧，赢了，我就把我的手机号告诉你。&#8221;小t，心想天下哪有题目能难倒我呢，便满口答应下来。mm开始说游戏规则：&#8220;我有一堆硬币，一共7枚，从这个硬币堆里取硬币，一次最少取2枚，最多4枚，如果剩下少于2枚就要一次取完。我和你轮流取，直到堆里的硬币取完，最后一次取硬币的算输。我玩过这个游戏好多次了，就让让你，让你先取吧</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">&#8221;<br>小t掐指一算，不对呀，这是不可能的任务么。小t露出得意的笑：&#8220;还是mm优先啦，呵呵</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">&#8221;mm霎时愣住了，想是对小t的反应出乎意料吧。<br>她却也不生气：&#8220;好小子，挺聪明呢，要不这样吧，你把我的邮箱给我，我给你发个文本，每行有三个数字n，p，q，表示一堆硬币一共有n枚，从这个硬币堆里取硬币，一次最少取p枚，最多q枚，如果剩下少于p枚就要一次取完。两人轮流取，直到堆里的硬币取完，最后一次取硬币的算输。对于每一行的三个数字，给出先取的人是否有必胜策略，如果有回答WIN，否则回答LOST。你把对应的答案发给我，如果你能在今天晚上8点以前发给我正确答案，或许我们明天下午可以再见。&#8221;<br>小t二话没说，将自己的邮箱给了mm。当他兴冲冲得赶回家，上网看邮箱，哇！mm的邮件已经到了。他发现文本长达100000行，每行的三个数字都很大，但是都是不超过65536的整数。小t看表已经下午6点了，要想手工算出所有结果，看来是不可能了。你能帮帮他，让他再见到那个mm吗？<br>&nbsp;<br><br>Input<br>不超过100000行，每行三个正整数n，p，q。<br>&nbsp;<br><br>Output<br>对应每行输入，按前面介绍的游戏规则，判断先取者是否有必胜策略。输出WIN或者LOST。<br>&nbsp;<br><br>Sample&nbsp;Input<br></span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000"><br></span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">4</span><span style="COLOR: #000000"><br>&nbsp;<br><br>Sample&nbsp;Output<br>LOST<br>WIN<br></span></div>
<br><br>博弈的入门题, <span><span>巴什博奕</span></span><span><span>(Bash Game), 具体了解请点击&nbsp;&nbsp;<a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html">博弈入门</a>&nbsp; .<br><br>代码如下:<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span><br><br>#include&nbsp;</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">iostream</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000"><br></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main&nbsp;()<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N,&nbsp;p,&nbsp;q;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">&nbsp;(&nbsp;scanf&nbsp;(&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d%d%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">N,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">p,&nbsp;</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">q&nbsp;)&nbsp;</span><span style="COLOR: #000000">!=</span><span style="COLOR: #000000">&nbsp;EOF&nbsp;)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;res&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;N&nbsp;</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">&nbsp;(&nbsp;p&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;q&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;puts&nbsp;(&nbsp;res&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;res&nbsp;</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">&nbsp;p&nbsp;</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">LOST</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">WIN</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;:&nbsp;</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">WIN</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">&nbsp;);<br>&nbsp;&nbsp;&nbsp;&nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;&nbsp;&nbsp;&nbsp;&nbsp;<br>}<br></span></div>
<br>另外秀秀自己的一行代码 :<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #000000"><span style="COLOR: #000000"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color=#1d58d1><u>______________白白の屋</u></font></a></span></span><br><br>main(p,q){</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;N,res;</span><span style="COLOR: #0000ff">while</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">~</span><span style="COLOR: #000000">scanf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d%d%d</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">N,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">p,</span><span style="COLOR: #000000">&amp;</span><span style="COLOR: #000000">q)){res</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">N</span><span style="COLOR: #000000">%</span><span style="COLOR: #000000">(p</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">q);puts(res</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">res</span><span style="COLOR: #000000">&lt;=</span><span style="COLOR: #000000">p</span><span style="COLOR: #000000">?</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">LOST</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">WIN</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">:</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">WIN</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);}}</span></div>
</span></span></span>
<img src ="http://www.cppblog.com/MiYu/aggbug/122756.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 11:59 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122756.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>博弈 入门 ( ACM 博弈 组合 )</title><link>http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html</link><dc:creator>MiYu</dc:creator><author>MiYu</author><pubDate>Mon, 09 Aug 2010 03:24:00 GMT</pubDate><guid>http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html</guid><wfw:comment>http://www.cppblog.com/MiYu/comments/122753.html</wfw:comment><comments>http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/MiYu/comments/commentRss/122753.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/MiYu/services/trackbacks/122753.html</trackback:ping><description><![CDATA[
<p style="MARGIN: 0cm 0cm 0pt; mso-outline-level: 1" class="MsoNormal"><span style="COLOR: #000000">MiYu原创, 转帖请注明 : 转载自 <a href="http://www.cppblog.com/MiYu/"><font color="#1d58d1"><u>______________白白の屋</u></font></a></span><a name="_Toc228254142"><span style="COLOR: maroon"><br><br>寻找平衡状态（也称必败态，</span><span style="COLOR: maroon"> </span></a><span style="mso-bookmark: _Toc228254142"><span style="COLOR: maroon">奇异局势），（满足：任意非平衡态经过一次操作可以变为平衡态）</span></span></p>
<p style="MARGIN: 0cm 0cm 0pt; mso-outline-level: 1" class="MsoNormal"><span style="mso-bookmark: _Toc228254142"><span style="COLOR: maroon">(</span></span><span style="mso-bookmark: _Toc228254142"><span style="COLOR: maroon">一</span><span style="COLOR: maroon">)</span></span><span style="mso-bookmark: _Toc228254142"><span style="COLOR: maroon; FONT-SIZE: 14pt">巴什博奕</span></span><span style="mso-bookmark: _Toc228254142"><span style="COLOR: maroon; FONT-SIZE: 14pt; mso-bidi-font-size: 12.0pt">(Bash Game):</span></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt; mso-char-indent-count: 2.0" class="MsoNormal"><span style="COLOR: blue">只有一堆</span><span style="COLOR: blue">n</span><span style="COLOR: blue">个物品</span><span style="COLOR: blue">,</span><span style="COLOR: blue">两个人轮流从这堆物品中取物</span><span style="COLOR: blue">,</span><span style="COLOR: blue">规定每次至少取一个</span><span style="COLOR: blue">,</span><span style="COLOR: blue">最多取</span><span style="COLOR: blue">m</span><span style="COLOR: blue">个</span><span style="COLOR: blue">.</span><span style="COLOR: blue">最后取光者得胜</span><span style="COLOR: blue">.</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span>n = (m+1)r+s , (r</span><span>为任意自然数</span><span>,s&#8804;m), </span><span>即</span><span>n%(m+1) != 0, </span><span>则先取者肯定获胜</span></p>
<p style="MARGIN: 0cm 0cm 0pt; mso-outline-level: 1" class="MsoNormal"><a name="_Toc228254143"><span style="COLOR: maroon">(</span></a><span style="mso-bookmark: _Toc228254143"><span style="COLOR: maroon">二</span><span style="COLOR: maroon">)</span></span><span style="mso-bookmark: _Toc228254143"><span style="COLOR: maroon; FONT-SIZE: 14pt">威佐夫博奕</span></span><span style="mso-bookmark: _Toc228254143"><span style="COLOR: maroon; FONT-SIZE: 14pt; mso-bidi-font-size: 12.0pt">(Wythoff Game):</span></span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; TEXT-ALIGN: justify; MARGIN: 0cm 0cm 0pt" class="MsoBodyTextIndent"><span style="COLOR: blue"><font face="宋体">有两堆各若干个物品</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">两个人轮流从某一堆或同时从两堆中取同样多的物品</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">规定每次至少取一个</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">多者不限</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">最后取光者得胜</font></span><span style="COLOR: blue">.</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span>(ak,bk)(ak &#8804; bk ,k=0,1,2,...,n)</span><span>表示<span style="COLOR: red">奇异局势</span></span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="COLOR: red">求法：</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt 21pt" class="MsoNormal"><span>ak =[k(1+&#8730;5)/2], bk= ak + k (k=0,1,2,...,n </span><span>方括号表示取整函数</span><span>)</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span><span style="mso-tab-count: 1">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span><span style="COLOR: red">判断：</span></p>
<p style="MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span><span style="mso-tab-count: 2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>Gold=(1+sqrt(5.0))/2.0</span><span>；</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt 21pt" class="MsoNormal"><span>1</span><span>）假设（</span><span>a</span><span>，</span><span>b</span><span>）为第</span><span>k</span><span>种奇异局势</span><span>(k=0,1,2...) </span><span>那么</span><span>k=b-a;</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt 21pt" class="MsoNormal"><span>2</span><span>）判断其</span><span>a==(int)(k*Gold),</span><span>相等则为奇异局势</span></p>
<p style="TEXT-INDENT: 10.5pt; MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span style="COLOR: #3366ff">（注：采用适当的方法</span><span style="COLOR: #3366ff">,</span><span style="COLOR: #3366ff">可以将非奇异局势变为奇异局势</span><span style="COLOR: #3366ff">.</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span>假设面对的局势是</span><span>(a,b) </span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span>若</span><span> b = a,</span><span>则同时从两堆中取走</span><span> a </span><span>个物体</span><span>,</span><span>就变为了奇异局势</span><span>(0,0)</span><span>；</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 39pt; mso-list: l0 level1 lfo1" class="MsoNormal"><span><span style="mso-list: Ignore">1.<span style="FONT: 7pt Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>如果</span><span>a = ak,</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 57pt; mso-list: l1 level2 lfo2" class="MsoNormal"><span><span style="mso-list: Ignore">1.1<span style="FONT: 7pt Times New Roman">&nbsp;&nbsp; </span></span></span><span>b &gt; bk, </span><span>那么</span><span>,</span><span>取走</span><span>b - bk</span><span>个物体</span><span>,</span><span>即变为奇异局势</span><span>(ak, bk)</span><span>；</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 57pt; mso-list: l1 level2 lfo2" class="MsoNormal"><span><span style="mso-list: Ignore">1.2<span style="FONT: 7pt Times New Roman">&nbsp;&nbsp; </span></span></span><span>b &lt; bk </span><span>则同时从两堆中拿走</span><span> ak &#8211; a[b &#8211; ak]</span><span>个物体</span><span>,</span><span>变为奇异局势</span><span>( a[b &#8211; ak] , a[b &#8211; ak]+ b - ak)</span><span>；</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 39pt; mso-para-margin-left: 2.0gd; mso-list: l1 level1 lfo2" class="MsoNormal"><span><span style="mso-list: Ignore">2<span style="FONT: 7pt Times New Roman">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></span></span><span>如果</span><span>a = bk ,</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 57pt; mso-list: l1 level2 lfo2" class="MsoNormal"><span><span style="mso-list: Ignore">2.1<span style="FONT: 7pt Times New Roman">&nbsp;&nbsp; </span></span></span><span>b &gt; ak ,</span><span>则从第二堆中拿走多余的数量</span><span>b &#8211; ak</span></p>
<p style="TEXT-INDENT: -18pt; MARGIN: 0cm 0cm 0pt 57pt; mso-list: l1 level2 lfo2" class="MsoNormal"><span><span style="mso-list: Ignore">2.2<span style="FONT: 7pt Times New Roman">&nbsp;&nbsp; </span></span></span><span>b &lt; ak ,</span><span>则</span> <span>若</span><span>b = aj (j &lt; k)<span style="mso-spacerun: yes"> </span></span><span>从第一堆中拿走多余的数量</span><span>a&#8211; bj;<span style="mso-spacerun: yes"> </span>(a &gt; bj)</span></p>
<p style="TEXT-INDENT: 9pt; MARGIN: 0cm 0cm 0pt 96pt" class="MsoNormal"><span>若</span><span>b = bj (j &lt; k)<span style="mso-spacerun: yes"> </span></span><span>从第一堆中拿走多余的数量</span><span>a&#8211; aj;<span style="mso-spacerun: yes"> </span>( a &gt; aj)</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">）</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">例题：</span><span style="COLOR: #3366ff">pku 1067</span></p>
<p style="MARGIN: 0cm 0cm 0pt; mso-outline-level: 1" class="MsoNormal"><a name="_Toc228254145"><span style="COLOR: maroon">(</span></a><span style="mso-bookmark: _Toc228254145"><span style="COLOR: maroon">三</span><span style="COLOR: maroon">)</span></span><span style="mso-bookmark: _Toc228254145"><span style="COLOR: maroon; FONT-SIZE: 14pt">尼姆博奕</span></span><span style="mso-bookmark: _Toc228254145"><span style="COLOR: maroon; FONT-SIZE: 14pt; mso-bidi-font-size: 12.0pt">(Nimm Game):</span></span></p>
<p style="TEXT-JUSTIFY: inter-ideograph; TEXT-ALIGN: justify; MARGIN: 0cm 0cm 0pt" class="MsoBodyTextIndent"><span style="COLOR: blue"><font face="宋体">有</font></span><span style="COLOR: blue">n</span><span style="COLOR: blue"><font face="宋体">堆各若干个物品</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">两个人轮流从某一堆取任意多的物品</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">规定每次至少取一个</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">多者不限</font></span><span style="COLOR: blue">,</span><span style="COLOR: blue"><font face="宋体">最后取光者得胜</font></span><span style="COLOR: blue">.</span></p>
<p style="TEXT-INDENT: 21pt; MARGIN: 0cm 0cm 0pt" class="MsoNormal"><span>任何<span style="COLOR: red">奇异局势</span></span><span>(a1, a2, &#8230; , an)</span><span>都有</span><span>a1(+)a2(+)&#8230;(+)an =0.<span style="mso-spacerun: yes"> </span>( (+)</span><span>为</span> <span>按位^</span><span>)<br><br><span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium 'Times New Roman'; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" ></span></span></p>
<p style="FONT-SIZE: 14pt">Nim游戏简介：</p>
<p style="FONT-SIZE: 14pt">（1）有两个玩家；</p>
<p style="FONT-SIZE: 14pt">（2）有三堆扑克牌（比如：可以分别是5，7，9张）；</p>
<p style="FONT-SIZE: 14pt">&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;游戏双方轮流操作；</p>
<p style="FONT-SIZE: 14pt">（3）玩家的每次操作是选择其中某一堆牌，然后从中取走任意张；</p>
<p>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;<wbr>&nbsp;最后一次去拍的一方为获胜方；<br>&nbsp; <br>定义: 假设 (xm&nbsp;&#183; &#183; &#183; x0)2 和(ym&nbsp;&#183; &#183; &#183; y0)2 的nim-sum是(zm &#183; &#183; &#183; z0)2,则我们表示成 (xm&nbsp;&#183; &#183; &#183; x0)2 &#8853; (ym&nbsp;&#183; &#183; &#183; y0)2&nbsp;= (zm &#183; &#183; &#183; z0)2,&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这里，zk&nbsp;= xk&nbsp;+ yk&nbsp;(mod 2)（k=0&#8230;m）. </p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img border="0" src="http://www.cppblog.com/images/cppblog_com/miyu/c1.jpg"><br></p>
<p>nim游戏的定理一：</p>
<p>&nbsp;对于nim游戏的某个位置(x1,x2,x3),当且仅当它各部分的nim-sum等于0时（即x1&#8853;x2&#8853;x3=0）（x1，x2，x3做异或操作^），则当前位于必败点。</p>
<p>&nbsp;<wbr>定理一也适用于更多堆的情况！<br><br></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">例题：</span><span style="COLOR: #3366ff">pku 2234</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">例题：</span><span style="COLOR: #3366ff">hdu 1730</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">例题：</span><span style="COLOR: #3366ff">pku 1740</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">例题：</span><span style="COLOR: #3366ff">pku 1704</span></p>
<p style="MARGIN: 0cm 0cm 0pt 21pt; mso-para-margin-left: 2.0gd" class="MsoNormal"><span style="COLOR: #3366ff">例题：</span><span style="COLOR: #3366ff">pku 1082 (</span><span style="COLOR: #3366ff">大量分析</span><span style="COLOR: #3366ff">&#8230; </span><span style="COLOR: #3366ff">结论很简单。</span><span style="COLOR: #3366ff"> </span><span style="COLOR: #3366ff">也可以根据简单的推论模拟实现。</span><span style="COLOR: #3366ff">)</span></p>
<img src ="http://www.cppblog.com/MiYu/aggbug/122753.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/MiYu/" target="_blank">MiYu</a> 2010-08-09 11:24 <a href="http://www.cppblog.com/MiYu/archive/2010/08/09/122753.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>