- 博客(17)
- 资源 (3)
- 收藏
- 关注
原创 莫比乌斯反演
简介当一个函数f(x)f(x)f(x)计算十分复杂时,如果方便计算出它的倍数的和,或因数的和g(x)g(x)g(x),可先计算出g(x)g(x)g(x),再通过莫比乌斯反演计算出f(x)f(x)f(x)。 例子: g(1)=f(1)g(1)=f(1)g(1)=f(1) g(2)=f(1)+f(2)g(2)=f(1)+f(2)g(2)=f(1)+f(2) g(3)=f(1)+f(3)g(...
2017-02-21 14:02:35 615
原创 【HDU1693】Eat the Trees(插头DP)
题目大意:找若干个环,布满地图所有白格,求方案数。题解:dp[I][j][s]表示I,j轮廓线时,轮廓线上的插头状态为s(01状态压缩),的方案数。转移: ①当前格为白格: 不能增加新插头。 任选一个蓝插头 必须选下面两个蓝插头。 ②当前格为黑格 1.有插头通往这里:不可能,方案数为0; 2.没有插头通往这里:直接转移上一次方案数。代码:#include<cstdio>#
2017-02-13 21:27:11 325
原创 斐波那契博弈
一堆石子有n颗。第一个人第一次至少取1颗,最多取n-1颗。至此后,每个人取的石子数不能超过对手前一次所取的石子数的2倍。 先手胜当且仅当n不是Fibonacci数。换句话说,必败态构成Fibonacci数列。
2017-02-13 21:00:49 397
原创 阶梯博弈
游戏开始时有许多硬币任意分布在楼梯上,共n阶楼梯从地面由下向上编号为0到n。游戏者在每次操作时可以将楼梯j(1<=j<=n)上的任意多但至少一个硬币移动到楼梯j-1上。游戏者轮流操作,将最后一枚硬币移至地上的人获胜。
2017-02-13 20:35:04 360
原创 博弈论
博弈论:1.NP状态 N(next):此状态的先手必胜。 P(perv):此状态的后手必胜。 2.NP转移 终止状态为P; 能一步到达任何一个P的状态为N; 不能一步到达任何P的状态为N;
2017-02-10 22:06:25 670
原创 【HDU1517】A Multiplication Game(博弈论)
题目大意:初始数为1,stan先手,每次将数乘以2~9,先将数≥n者胜。题解:倒推,n为P状态,n-1~n/9为N状态,n/9-1~n/9/2为P状态……一直不停除以9,除以2,状态交替,要特殊处理当前数是2或9的倍数的情况,除以2或9会有差异。
2017-02-10 22:02:06 283 1
原创 【HDU1527】取石子游戏(威佐夫博弈)
题目:有两堆石子,数量任意,可以不同。游戏开始由两个人轮流取石子。游戏规定,每次有两种不同的取法,一是可以在任意的一堆中取走任意多的石子;二是可以在两堆中同时取走相同数量的石子。最后把石子全部取完者为胜者。现在给出初始的两堆石子的数目,如果轮到你先取,假设双方都采取最好的策略,问最后你是胜者还是败者。 威佐夫博弈: 威佐夫博弈代码:#include#include
2017-02-10 19:36:06 397
原创 【HDU1850】Being a Good Boy in Spring Festival (SG定理)
题目大意:M堆牌,每堆有Ni个,两人轮流取,每次取一堆的任意数量,取完者胜。问先手想赢,第一步有几种方案?题解:SG定理的巧妙应用 因为每次可以取任意数量,所以sg[i]==i。整个游戏的sg值s=N1^N2^…^Nm; 枚举I到m,设x=s^Ni,(此时x为除了第I堆,其它堆游戏的和的sg值),只要第I堆取了x个,x^其它游戏的和(x)==0,是P状态,所以先手第一步在第I堆取x个就是一种方案
2017-02-10 19:21:57 318
原创 【HDU1848】Fibonacci again and again (博弈论)
题目大意:有3堆石头,两个人轮流取,每次取的数量只能是Fibonacci中的数,取完所有的人获胜,求先手胜负情况。
2017-02-10 18:47:11 276
原创 【UVA11542】Square(高斯消元)
题目大意:n个数,选几个数相乘,使积为平方数,求方案数。题解: 给每个数分解质因数,用质因数的指数mod 2作为未知数,每个数中包含该质因数的指数mod 2作为参数,列方程。(因为目的是为了每个质因数指数mod 2为0)
2017-02-07 09:18:38 418
原创 【HDU3359】Kind of a Blur (高斯消元)
题目大意:给一张n*m的照片,按照距离d模糊处理(即将与该格子曼哈顿距离≤d的格子取平均值得到输入的值)。
2017-02-06 21:24:20 397
原创 【POJ2947】 Widget Factory (模线性方程)
题目大意:n种零件,m次工作日程,零件序号从1到n,给出m次工作日程的信息,x,s,e,表示生产了x个零件,从星期s开始到星期e(有可能是多个星期),然后给出生产的x个零件的序号。求每个零件被生产需要多少天(保证在3到10天)解题思路:设未知数,列方程,高斯消元。
2017-02-06 11:23:31 382
原创 【NOIP2004】虫食算(搜索+高斯消元)
题意:给定一个n进制的竖式计算(n位数+n位数=n位数),相同字母表示相同的数,不同字母表示不同的数(填数游戏),保证有且仅有唯一解。做法1:暴力虫食算暴力做法2:搜索+高斯消元 每一位列一个方程,添加n个未知数,表示每一位的进位状况。 列方程:每一位:两个加数系数为1,和系数为-1,当前这一位系数-n,前一位系数1。 然后跑一遍高斯(肯定是解不出来的,未知数>方程数),然后dfs枚举进位的状
2017-02-05 19:19:31 538
原创 高斯消元法(高斯·约当消元法)(整数)
整数高斯消元作用在于最后得出的解可以判断是否为整数。首先看高斯消元法(浮点) 整数的高斯消元法,在消元时通过等式乘法,将同一项系数统一成它的最小公倍数,然后再进行消元。核心代码:int n,A[MAXN][MAXN*2];int gcd(int a,int b){return b==0?a:gcd(b,a%b);}int lcm(int a,int b){return a/gcd...
2017-02-05 16:15:41 2061
原创 高斯消元法(高斯·约当消元法)(浮点)
高斯消元法,用于解多元一次方程(几乎类似模拟手动解方程)。 思路: 通过等式的乘除,把方程1的x1x1x_1系数a11a11a_{11}分别化为方程2~方程n的x1x1x_1系数,然后将方程2~方程n减去得到的新方程,从而消掉方程2~方程n中的x1x1x_1。接着用方程2的x2x2x_2继续把方程3~方程n中的x2x2x_2消掉…… 大概系数就成了这个样子↓ 举个例子: 一个...
2017-02-05 11:43:04 5485
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人