数学
文章平均质量分 79
Zeyu_King
蒟蒻代码风格巨丑,神犇勿喷:)
展开
-
jsoi2012省队集训:集合计数
【问题描述】一个有N个元素的集合有2^N个不同子集(包含空集),现在要在这2^N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为K,求取法的方案数,答案模1000000007。(是质数哦)【数据范围】1 被虐傻了。。。。。想了2小时,一直把公式套错。。。。不多说,说多了全是泪假设我们已经确定了k个元素,求最后并集为此k个元素的方案。很明显不同的k个元原创 2015-02-05 09:26:11 · 1018 阅读 · 0 评论 -
[bzoj 2654] tree
跪神题,跪秒题大神zy!很多人的第一想法就是选前need小的白边,再放黑边,很不幸这是错的正确解法很有启发性。如果我们按照正常的选边来做最小生成树,如果选出的白边大于need条,我们就需要少选一些的白边,否则我们就需要多选一些白边。如何才能少选一些白边呢?我们可以该白边全部加上一个正数,同理我么可以多选一些白边。这样我们就可以二分了!但是这还有一些问题,假设我们二分得到原创 2015-06-11 22:18:50 · 823 阅读 · 0 评论 -
除草(3.30~4.4)
//以下所有代码都可在我的代码片里找到1、travel基本把树剖忘光了。。。注意到b树上的点至多对应a树上的一个点,询问要求b树上的一条路径对应a树上几条路径。简单的说就是把树上的路径剖成logn段,每段我们都可以利用主席树对每段查询即可。2、弗洛伊德的复仇可以看到如果所有的边都满足ai>bi(应该是优惠吧),那么一定存在最优策略使得所有的货物都应该是选择一条路径来运输。原创 2015-04-05 15:25:14 · 731 阅读 · 0 评论 -
Chinese Remainder Theorem
用于求解同余方程组x = ri (mod ai) 1更一般的,我们来考虑如何解决ai不互质的情况我们可以用合并方程组的方法来解决此类问题。x = r1 (mod a1)x = r2 (mod a2)我们可以将上述方程写成另一种形式x = k1*a1+r1x = k2*a2+r2我们可以得到k1*a1+r1=k2*a2+r2即k1*a1 = r2-原创 2015-05-29 19:58:49 · 961 阅读 · 0 评论 -
Primitive root
高大上的数论,先入门再说。原根的定义可以到wiki上找,上面介绍得很清楚。如果你是个热(bu)爱(dong)祖(ying)国(yu)的人,看这个blog就行了1、51nod 1135奇怪的oj,还是放链接吧求奇素数n最小的原根。从2~n-1枚举x,判断x是否满足x^j mod n != 1 j=2,3,4,...,phi(n)-1暴力判断会T,需要跟快的算法。原创 2015-05-14 19:59:36 · 1423 阅读 · 0 评论 -
除草(4.6~4.11)
1、 加特技水题,树上背包dp。2、花可以推出第一步答案为(n!)^2的约数个数第二步其实要求一个long long范围内的质因数分解,Pollard_rho解决。3、连电线任意重连一条树边,求修改后树直径的最小值和修改方案。比较繁琐的树dp。大概就是想办法搞出子树里的直径,子树外的直径,那么割去子树连向外的边,添边的最优方案就是加在两条直径的中间。开了20来个数原创 2015-04-13 23:08:47 · 653 阅读 · 0 评论 -
省选模版复习——线性筛法
bzoj 3944 sum求phi和mu的前缀和,n首先orz叉院lyp大神的讲义。以下为lyp大神讲义的公式推导过程(我不生产公式,我只是大神的搬运工~~)假设我们需要求f(x)的前缀和令g(n)=sigma f(d) (满足d|n) F(n)=sigma f(i) (1我们可以得到sigma g(i) (1 =sigma f(i)*[n/i] (1<原创 2015-04-15 19:24:54 · 583 阅读 · 0 评论 -
POJ1811 Prime Test
Miller_Rabin+Pollard_rho算导上都有,贴模板啦#include #include #include using namespace std;typedef long long LL;const int PRIME[9]={2,3,5,7,11,13,17,19,23};LL n,minx;LL mult(LL a,LL b,LL Mod){ LL原创 2015-04-06 17:10:03 · 463 阅读 · 0 评论 -
hdu 4344 Mark the Rope
依然是pollard_rho和Miller_Rabin的模版。。。#include #include #include using namespace std;const int PRIME[9]={2,3,5,7,11,13,17,19,23};typedef long long LL;LL ans1,ans2,tmp,n,dig[200];int Case,cnt;LL原创 2015-04-06 21:09:30 · 577 阅读 · 0 评论 -
cqoi2015部分题解
只做了前三题。。。。。T1、选数先把题目转化为求选n个数最大公约数为1,不用说了。假定f[i]为选出n个数最大公约数为i的方案数。由于题目中有条件H-L令L=(L-1)/i, R=H/if[i] = (R-L)^n - sigma f[a*i] - (R-L)最后的R-L为减去全部选择一个数的方案数答案为f[1]PS:如果范围中有1,注意f[1]++,因为全部选原创 2015-04-22 09:48:00 · 514 阅读 · 0 评论 -
[bzoj 3994] sdoi2015 约数个数和
需要用到一个神奇的式子:d(nm)=sigma [ gcd(i,j)==1 ] 其中i|n&&j|m把这个做前缀和应用到最终答案中去可得ans = sigma( {n/i} * {m/j} * [ gcd(i,j)==1 ] ) 其中{x}表示x向下取整应用莫比乌斯反演可得ans = sigma( {n/i} * {m/j} * sigma mu(d) )其中d|i&&d原创 2015-04-22 09:30:59 · 1010 阅读 · 0 评论 -
记些东西
1、写FFT时需要对N位二进制翻转,我一直都是开一个rev数组预处理来搞的,如下 for (N=2, M=1;N<(n+m);N<<=1, M++); for (i=0;i<N;i++){ int len=0; for (j=i;j>0;j>>=1) dig[len++]=(j&1); for (j=0;j<M;j++) rev[i]=( (rev[i]<<1)|dig原创 2015-04-05 00:36:59 · 520 阅读 · 0 评论 -
[bzoj 2653] middle
陈老师的神题,先拜一下求中位数用二分的方法很容易想到。可以想到我们把二分到数x后,把小于x的定义为-1,大于等于x的定义为1,只要求出一个子序列和大于等于0就说明中位数大于等于x(题目中的n/2是向上取整的)然而之后我并不知道怎么做一般我们建立主席树都是按照数组下标顺序来建的,这题比较奇葩。假设我们只需要查询中位数为x的时候,最大的子序列和是否大于等于0,会做吧——直接弄出原创 2015-06-13 07:14:20 · 736 阅读 · 0 评论