摘要:平衡树+启发式合并+并查集 因为要求一坨数中第k大的……用平衡树会很好维护…… 但又要求连通块?所以用并查集来维护…… 大概就是让并查集的fa和Treap的根是同一个节点吧……TLE了N多发,可能是Treap的随机rank看脸的原因……QAQ唯一过了的一次是小号…… 1 /*********... 阅读全文
posted @ 2015-02-17 01:44 Tunix 阅读(169) 评论(0) 推荐(0) 编辑
摘要:可持久化线段树 这次是询问一段区间内权值在给定范围内的点的数量,同样是可持久化线段树简单操作…… 1 //Vijos 1923 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #define rep(i,n)... 阅读全文
posted @ 2015-02-16 22:09 Tunix 阅读(82) 评论(0) 推荐(0) 编辑
摘要:可持久化线段树 裸可持久化线段树,把区间第K大的rank改成num即可……(往儿子走的时候不减少)苦逼的我……MLE了一次(N*30),RE了一次(N*10)……数组大小不会开……最后开成N*20的过了 1 /********************************************... 阅读全文
posted @ 2015-02-16 18:12 Tunix 阅读(276) 评论(0) 推荐(0) 编辑
摘要:莫比乌斯反演 PoPoQQQ的讲义例一的一半……好吧这题是那题的基础部分= =很水……WA了一次:因为没强制类型转换LL 1 /************************************************************** 2 Problem: 1101 3 ... 阅读全文
posted @ 2015-02-16 17:28 Tunix 阅读(83) 评论(0) 推荐(0) 编辑
摘要:莫比乌斯反演 PoPoQQQ讲义第二题。 暴力枚举每个质数,然后去更新它的倍数即可,那个g[x]看不懂就算了…… 为什么去掉了一个memset就不T了→_→…… 1 /************************************************************** ... 阅读全文
posted @ 2015-02-16 16:03 Tunix 阅读(115) 评论(0) 推荐(0) 编辑
摘要:T1 啊……a^b与 c^d比较大小,我们可以两边取对数,转化成 log(a^b)=b*log(a)和d*log(c) 这样就能直接算了……然后稍微搞一下精度什么的就A了=。= 1 //BC #29 2 #include 3 #include 4 #include 5 #include 6 #i... 阅读全文
posted @ 2015-02-07 22:13 Tunix 阅读(72) 评论(0) 推荐(0) 编辑
摘要:莫比乌斯函数:http://wenku.baidu.com/view/fbec9c63ba1aa8114431d9ac.html Orz PoPoQQQ 这个证明过程第三步和第四步一开始没看懂…… 第三步:观察计算左边f(k)的系数,可以看出只要d不大于n/k均可以使μ(d)成为f(k... 阅读全文
posted @ 2015-02-06 23:26 Tunix 阅读(542) 评论(0) 推荐(0) 编辑
摘要:莫比乌斯反演/容斥原理 OrzPoPoQQQ PoPoQQQ莫比乌斯函数讲义第一题。for(i=1;i12 #include13 #include14 #include15 #include16 #define rep(i,n) for(int i=0;i=n;--i)19 using name... 阅读全文
posted @ 2015-02-06 23:22 Tunix 阅读(102) 评论(0) 推荐(0) 编辑
摘要:生成函数+FFT Orz PoPoQQQ 这个题要算组合的方案,而且范围特别大……所以我们可以利用生成函数来算 生成函数是一个形式幂级数,普通生成函数可以拿来算多重集组合……好吧我承认以上是在瞎扯→_→ 这个东西我也不记得是多会儿看的了……找本《组合数学》自己看看好了……或者问学数学竞赛的同... 阅读全文
posted @ 2015-02-06 19:08 Tunix 阅读(303) 评论(0) 推荐(1) 编辑
摘要:FFT c[k]=sigma a[i]*b[i-k] 这个形式不好搞…… 而我们熟悉的卷积的形式是这样的 c[k]=sigma a[i]*b[k-i]也就是【下标之和是定值】 所以我们将a数组反转一下就可以卷积了=。= 1 /**********************************... 阅读全文
posted @ 2015-02-06 17:30 Tunix 阅读(67) 评论(0) 推荐(0) 编辑
摘要:BSGS BSGS裸题,嗯题目中也有提示:求a^m (mod p)的逆元可用快速幂,即 pow(a,P-m-1,P) * (a^m) = 1 (mod p) 1 /************************************************************** 2 ... 阅读全文
posted @ 2015-02-06 16:03 Tunix 阅读(97) 评论(0) 推荐(0) 编辑
摘要:组合计数/乘法逆元 排列组合求总方案数 这个可以用一个一维的动态规划解决: f[i][0]表示第i头牛是牝牛的方案数 f[i][1]表示第i头牛是牡牛的方案数 则转移为:f[i][0]=f[i-1][0]+f[i-1][1]; f[i][1]=f[i-K-1][... 阅读全文
posted @ 2015-02-06 12:13 Tunix 阅读(113) 评论(0) 推荐(0) 编辑
摘要:快速幂/扩展欧几里得/BSGS 经典好例题!! 三个问题三种算法…… 算法:白书(算法竞赛入门经典——训练指南)全有…… 1 /************************************************************** 2 Problem: 2242 ... 阅读全文
posted @ 2015-02-05 23:51 Tunix 阅读(90) 评论(3) 推荐(0) 编辑
摘要:之前一直有些疑惑……在群里问了下,ydc神犇的回复解决了我的疑惑,写篇博客记录一下这个做法。对于线性同余方程组: a1*x≡b1 (mod c1) a2*x≡b2 (mod c2) …… an*x≡bn (mod cn)1.若有c1、c2、c3、……cn两两互质,则可以用中国剩余定理直接算出... 阅读全文
posted @ 2015-02-05 22:44 Tunix 阅读(875) 评论(0) 推荐(1) 编辑
摘要:扩展欧几里德+快速幂 每次转换位置:第x位的转移到2*x %(n+1)这个位置上 那么m次后就到了(2^m)*x %(n+1)这个位置上 那么找洗牌m次后在 l 位置上的牌就相当于解线性模方程: (2^m)*x ≡ l (mod n+1) 扩展欧几里得即可 这里扩展欧几里得解的是ax+by=... 阅读全文
posted @ 2015-02-04 16:58 Tunix 阅读(103) 评论(0) 推荐(0) 编辑
摘要:插头DP 插头dp模板题…… 这题比CDQ论文上的例题还要简单……因为不用区分左右插头(这题可以多回路,并不是一条哈密尔顿路) 硬枚举当前位置的状态就好了>_ 3 #include 4 #include 5 #include 6 #include 7 #define rep(i,n) for(... 阅读全文
posted @ 2015-02-04 15:50 Tunix 阅读(83) 评论(2) 推荐(0) 编辑
摘要:模拟退火 Orz HZWER 这题的题意是在二维平面内找一点,使得这点到给定的n个点的距离和最小……0.0 模拟退火算法请戳这里 1 //POJ 2420 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #... 阅读全文
posted @ 2015-02-03 21:00 Tunix 阅读(81) 评论(0) 推荐(0) 编辑
摘要:欧拉函数/莫比乌斯函数 嗯……跟2190很像的一道题,在上道题的基础上我们很容易就想到先求出gcd(x,y)==1的组,然后再让x*=prime[i],y*=prime[i]这样它们的最大公约数就是prime[i]了…… 当然我们完全没必要这样做……对于每个prime[j],计算在(1,n/pr... 阅读全文
posted @ 2015-02-03 18:34 Tunix 阅读(132) 评论(0) 推荐(0) 编辑
摘要:欧拉函数/莫比乌斯函数 Orz iwtwiioi 这个嘛……很明显在同一条线上的两个点一定是满足 x1*k=x2,y1*k=y2,(好吧这个表示方式有点傻逼,懂得就好了)那么这条线上的点只有第一个会被看到,即x,y互质的那一个点(如果gcd(x,y)==k>1那么肯定在它前面还有点(x/k,y/... 阅读全文
posted @ 2015-02-03 16:34 Tunix 阅读(167) 评论(0) 推荐(0) 编辑
摘要:中国剩余定理 没啥重要的……模板题,中国剩余定理就是解出模线性方程组的一个可行解(好像也是唯一解?) 这是一种神奇的构造方法……明白了为什么这样构造是对的就行了=。=至于怎么想到这种构造方法的……去问孙子去→_→ 1 //Vijos 1164 2 #include 3 #include 4 #i... 阅读全文
posted @ 2015-02-03 00:16 Tunix 阅读(65) 评论(0) 推荐(0) 编辑
摘要:排列组合 蛮逗的…… 这题题干描述的就一股浓浓的Kruskal的气息……很容易就想到是求一个n个点的完全图的生成树个数,然后由于有序,再乘一个n-1的排列数(n-1条边的全排列)即(n-1)! 但是我一下就卡在了 完全图的生成树个数这个地方……怎么也想不出来……后来看了题解,原来这是一个奇葩的... 阅读全文
posted @ 2015-02-02 20:50 Tunix 阅读(59) 评论(0) 推荐(0) 编辑
摘要:虚树+树形DP 本题100W的点数……不用虚树真的好吗…… Orz ZYF我的感悟: dp的过程跟SPOJ 1825 FTOUR2 的做法类似,依次枚举每个子树,从当前子树和之前的部分中各找一条最长(短)路径更新答案,再把这个子树的最短路径加入到x节点中去(之前算过的部分)这样就实现了枚举所有... 阅读全文
posted @ 2015-02-02 20:09 Tunix 阅读(129) 评论(0) 推荐(0) 编辑
摘要:经典证明:Prüfer编码与Cayley公式(转Matrix67)Cayley公式是说,一个完全图K_n有n^(n-2)棵生成树,换句话说n个节点的带标号的无根树有n^(n-2)个。今天我学到了Cayley公式的一个非常简单的证明,证明依赖于Prüfer编码,它是对带标号无根树的一种编码方式。给定一... 阅读全文
posted @ 2015-02-02 17:23 Tunix 阅读(1771) 评论(0) 推荐(0) 编辑
摘要:虚树+树形DP OrzZYF……果然好神……建虚树先按dfn排序,再用一个单调栈来维护当前这条【链】,往里加边……说实话还没弄懂- -留个坑吧……RE的原因:这条链往出退的时候没写top--;在第112行……导致死循环了! 1 /*********************************... 阅读全文
posted @ 2015-02-01 22:46 Tunix 阅读(225) 评论(0) 推荐(0) 编辑
摘要:扩展欧几里德根据题意列出不定方程: (x+m*T)-(y+n*T)=k*L; //T表示跳了T次,由于是环,可能追了多圈,所以结果应为k*L化简得 T(m-n)-kL=y-x;这就成了我们熟悉的ax+by=c的形式,扩展欧几里得求解T即可(一定要分清哪个是变量x,哪个是常量a)在研究ax+by==c... 阅读全文
posted @ 2015-02-01 11:54 Tunix 阅读(56) 评论(0) 推荐(0) 编辑