08 2012 档案
摘要:由于给出的数太大了,所以我们将两个数A,B拆成了N个数相乘和M个数相乘的形式。N,M<=1000,拆成的数<=1000000000。是不是够大?最终的结果最多保留9位输出。例如:3358572 83391967 82350229961 1091444 8863输出为:000012028根据欧拉公式,我们可以将任何一个数表示成如下形式:n=p1^x1*p2^x2*p3^x3.......*pm^xm;如果将A和B分别表示成A = p1^a1 * p2^a2 * … * pn^anB = p1^b1 * p2^b2 * … * pn^bn其中p1,p2....都是素数,a1,a2...
阅读全文
摘要:多项式插值取模哈希标记法是用来标记字符串的一种哈希标记法,能够快速,较为精确的进行哈希标记。在该方法中,字符串被看做是一种37进制的数。对于一个字符串,可以用以下方法计算它的哈希值LL p=0; //计算hash值用for(j=0;j<len;j++) p=p*T+(a[j]-'a'+1);其中T=37。我们可以发现,如果一个串的长度上千上万,那么这个hash值就会很大。这时候,我们需要将hash值进行分类,也就是取模,我们设定一个常数,假设这个常数是H,那么所有的hash值将会被分类成H类。分别是0+H,0+2*H......0+N*H1+H,1+2*H,1+3*H..
阅读全文
摘要:题意: 你在一条布满地雷的道路上,开始在坐标1。每次有概率P向前走一步,有概率1-P向前走两步。道中路某几个点上会有地雷,问你安全通过的概率。地雷数N<=10,坐标范围在100000000内。假设dp[i]表示安全走到i点的概率,那么dp[i]=P*dp[i-1]+(1-P)*dp[i-2]。很简单的一个转移,可是偏偏坐标范围太大了。直接递推爆内存,而且肯定也会超时。我们换一个思路,假设x[i]表示第i个地雷的坐标。对于任何两个地雷x[i]~~x[i-1]+1之间,只会有一个地雷,那就是x[i]。我们安全通过该段的概率等于1 减去猜到x[i]的概率。也就是说,我们将n个地雷分成n段分别处
阅读全文
摘要:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3633给你n个数,然后m个询问,每次询问区间[a,b]中从右到左最先出现重复的数字,比如51 2 3 1 2询问[1 5],那么答案就是2.因为2是第一次出现2次的。其中3≤ n ≤ 500,000,1 ≤ m ≤ 50,000,数值<=2^31-1。解法是,先把所有数字从小到大排序,相同的按出现的先后顺序排序。更新时,对于每一个数x,如果前面的y==x的话,那么在线段树中,在x的坐标位置上赋值上y的坐标位置。查询时,[a,b]就是查询区间[a,b]中大于等于a的最
阅读全文
摘要:首先了解一点,求解一个数的因子个数。假设p[]数组里全部是素数,那么任何一个整数,可以唯一的表示成n=p1^x1*p2^x2*p3^x3.......*pm^xm,那么因子个数便为:(x1+1)*(x2+1)*.....*(xm+1)。给定一个整数n,求解1~~n范围内,因子个数最多的那个数,如果相同的话,取较小的。这里要认识到一点,因子数最多的那个数,根据我们上面说的,可以由素数的乘积组成。那么我们枚举素数的幂,也就是上面式子上的x1,x2,x3...xm。就可以遍历到1~~n范围内的所有可能解。假设n的取值范围是10^18次方,看起来很大是吧,对于素数2来说,2^60次方就大于10^18次
阅读全文
摘要:http://acm.zjut.edu.cn/ShowProblem.aspx?ShowID=1423Description:由于山体滑坡,DK被困在了地下蜘蛛王国迷宫。为了抢在DH之前来到TFT,DK必须尽快走出此迷宫。此迷宫仅有一个出口,而由于大BOSS的力量减弱影响到了DK,使DK的记忆力严重下降,他甚至无法记得他上一步做了什么。所以他只能每次等概率随机的选取一个方向走。当然他不会选取周围有障碍的地方走。如DK周围只有两处空地,则每个都有1/2的概率。现在要求他平均要走多少步可以走出此迷宫。Input:先是一行两个整数N, M(1<=N, M<=10)表示迷宫为N*M大小,然
阅读全文
摘要:我们知道,有些DP方程可以转化成DP[i]=f[j]+x[i]的形式,其中f[j]中保存了只与j相关的量。这样的DP方程我们可以用单调队列进行优化,从而使得O(n^2)的复杂度降到O(n)。可是并不是所有的方程都可以转化成上面的形式,举个例子:dp[i]=dp[j]+(x[i]-x[j])*(x[i]-x[j])。如果把右边的乘法化开的话,会得到x[i]*x[j]的项。这就没办法使得f[j]里只存在于j相关的量了。于是上面的单调队列优化方法就不好使了。这里学习一种新的优化方法,叫做斜率优化,其实和凸包差不多,下面会解释。举例子说明是最好的!HDU 3507,很适合的一个入门题。http://a
阅读全文