摘要:
POJ 2960 S-Nim大意:有n堆石子,每堆石子个数已知,两人轮流从中取石子,每次可取的石子数x满足x属于集合S(k) = {s1,s2,s3...sk-1},问先拿者是否有必胜策略?分析:1.可将问题转化为n个子问题,每个子问题分别为: 从一堆x颗石子中取石子,每次可取的石子数为集合S(k)中的一个数2.分析(1)中的每个子问题, 易得:SG(x) = mex(SG[x-s[i]])(0<i<k-1);3.后面就是SG函数的应用,根据Sprague-Grundy Therem:g(G)=g(G1)^g(G2)^g(G3)^...^g(Gn) 即游戏的和的SG函数值是它的所有 阅读全文
posted @ 2011-08-31 11:19
ω 提拉米兔 ℃
阅读(849)
评论(0)
推荐(1)
摘要:
比赛的时候素数表打搓了……后来实在没办法就改成给一个k就用根k的复杂度把它分解掉,然后4500MS蹭过去了……下来知道还是要打素数表的。。先开始打素数表的时候prime[0]怎么打都是1,搞得我烦死,后来我一看,我的MAXN和PRIME设定了以后,开数组的时候忘记的+10,导致最后越界,可能就会出错吧。改过来就没事了。。。先开始还犯了两个错误:1.k,n搞反了 2.分子分母搞反了……思路就是,这个题只用对k做素数分解,然后看它在n!中相应的素数的指数,从而求出i的最大值。PS:这是我第一次看见cin,cout比scanf,printf快的……而且关了同步还会wa。。2011-08-31 10. 阅读全文
posted @ 2011-08-31 10:43
ω 提拉米兔 ℃
阅读(474)
评论(0)
推荐(0)
摘要:
zz:http://blog.sina.com.cn/s/blog_55a8a96d010005eb.html首先讨论石头堆两堆两堆相等的情况,例如x,x,y,y,z,z.6堆的情况.在这种情况下先取的必输,很简单,先取的那人怎么取后取的那人就怎么取(如果对方把石头分配到一堆上,你就分配到与之对应的堆上),总之保持这个相等的均势不变,这样到最后,后取的人就将取走最后一堆石头.知道这个结论后,就可以把N堆中两两相等的堆去掉,来讨论互不相等的堆来.第一,只有一堆x,第一个人直接全部取走就胜利了.(显然x,y,y的情况也是第一人胜,所以忽略相等的石头);第二,x,y的形式(这里不妨假设递增,下同). 阅读全文
posted @ 2011-08-28 10:51
ω 提拉米兔 ℃
阅读(261)
评论(0)
推荐(0)
摘要:
直接发分析了,代码太短也没什么好说的……博弈论题目可以用寻找必败状态的方法解决。第一个必败状态是2001.11.04。由此可以推出其他任何时间的状态。对于除2001.11.04外的其他任何时间,present状态是由能移动到的下两个next状态决定的(当然有些时间只有一个next状态),比如1924.12.19的状态是由1924.12.20和1925.01.19两个状态决定。如果两个next状态中有一个必败状态,则present状态为必胜状态;如果两个next状态都为必胜状态,则present状态为必败状态。对于2001年11月的那4天,状态都是交替胜负的。1和3号必胜,2和4号必败。现在考虑 阅读全文
posted @ 2011-08-28 09:41
ω 提拉米兔 ℃
阅读(360)
评论(0)
推荐(0)
摘要:
zz: http://hi.baidu.com/zhulei632/blog/item/657efefaf299b1dbb58f3152.html问题分析:威佐夫博弈(Wythoff Game):有两堆各若干个物品,两个人轮流从某一堆或同时从两堆中取同样多的物品,规定每次至少取一个,多者不限,最后取光者得胜。 这种情况下是颇为复杂的。我们用(ak,bk)(ak ≤ bk ,k=0,1,2,...,n)表示两堆物品的数量并称其为局势,如果甲面对(0,0),那么甲已经输了,这种局势我们称为奇异局势。前几个奇异局势是:(0,0)、(1,2)、(3,5)、(4,7)、(6,10)、(8,13)、(9. 阅读全文
posted @ 2011-08-28 00:59
ω 提拉米兔 ℃
阅读(236)
评论(0)
推荐(0)
摘要:
转载自http://blog.csdn.net/logic_nut/archive/2009/10/22/4711489.aspx推荐看看:http://www.math.ucla.edu/~tom/学习理论在这里:http://www.math.ucla.edu/~tom/Game_Theory/Contents.html博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多。(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要看“博弈论”的时 候。)Nim游戏是博弈论中最经典的模型(之一?),它又有 阅读全文
posted @ 2011-08-27 00:59
ω 提拉米兔 ℃
阅读(385)
评论(0)
推荐(0)
摘要:
假设N的电势为0,电流为1然后假设1~N-1的电势,利用电流守恒来建立方程,解一个方程组即可。又是标程……当满秩时高斯消元的模版好了2011-08-26 20:54:21Accepted39760MS236K1093 BG++Tiramitu#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<cstring>using namespace std;double ans[60],d[60][60],eps=1e-9;int n,m;voi 阅读全文
posted @ 2011-08-26 21:19
ω 提拉米兔 ℃
阅读(359)
评论(0)
推荐(0)
摘要:
多校确实能学到很多东西呀~~~看了题解,大概意思是说,这个题是在2*n+1个数中找1个数那种问题的加强版。对于这个简单一点的问题,只要把小球的编号依次异或就可以了,这里就不行,于是我们想到开一个31*31的数组,cnt[i][j],表示第i位是1同时第j位也是1的数字的个数。把整个数组模三,于是整个数组里面就剩下多余的两个数a,b了,我们先来考查cnt[i][i] 。如果a==b,那么cnt[i][i]不是零就是二,那么很容易就得出a,b的值。如果存在i,使得cnt[i][i]==1,那么不妨设只有a在第i位上是1。那么cnt[i][j]就唯一表示的a了。这样就把a求出来了。然后遍历cnt[i 阅读全文
posted @ 2011-08-26 12:34
ω 提拉米兔 ℃
阅读(378)
评论(0)
推荐(0)
摘要:
大意:题目要求对于每一个n,输出他的所有因子之和这个题乍一看和poj1845很像,的确可以用poj1845的方法来做,但是这个题的数据规模比poj小很多,我在网上搜了一下,居然这个可以用筛法做,像筛素数那样,把所有i的倍数都加上i……学习啦~~2011-08-25 10:39:27Accepted121593MS2148K319 BG++Tiramitu#include<cstdio>#define MAXN 500000int array[MAXN+10];int main(void){ int i,j; array[0]=0; array[1]=0; for(i=1... 阅读全文
posted @ 2011-08-25 10:40
ω 提拉米兔 ℃
阅读(269)
评论(0)
推荐(0)
摘要:
这道题wa到我快吐了……主要是因为计算欧拉函数的时候是先乘再除的,因该反过来,但是不知道这样为什么会wa,还有就是素数筛写搓了,标程的素数筛改成我的就wa了……这道题n很大,我们套用polya公式的时候就不能枚举i了,只能反过来枚举循环的长度L证明就不说了,别的解题报告都有……对于每一个长度L,都有若干i使得gcd(n,i)=n/L,那么在polya公式里面,n^gcd(n,i)就有euler(L)个。因为L|n,所以只用枚举到L*L<n后来才发现p不是素数,所以在除总数n的时候不可以用素数取逆方法直接算,就用的标程的方法,如下注释。还有就是,现在还不知道哪里应该取模哪里不应该取模,哪里 阅读全文
posted @ 2011-08-24 14:59
ω 提拉米兔 ℃
阅读(414)
评论(0)
推荐(0)
浙公网安备 33010602011771号