摘要:
感谢dalaoWJZ的讲解。 我们对于每一个串a[i]相当于在他parent的right集合里找一个出现位置在id-len[x]+len[parent]到id[x]-1区间的 用主席树判存在性即可。 至于我问了很久这个区间为什么不能往前判,原因是你每个节点都代表唯一一个子串,所以我们定性查询就可以啦 阅读全文
摘要:
题目:https://arc069.contest.atcoder.jp/tasks/arc069_d 题意就是让你在n对数字每一对都选一个数使得任意两个数做差的绝对值最小值最大。 关系显然是一个2-sat,然后我们发现二份答案如果差值为x那么a-x+1到a+x-1是绝对不能选的, 也就是选完以后剩 阅读全文
摘要:
1 #include 2 using namespace std; 3 const double pai=acos(-1),eps=1e-8; 4 struct DOT 5 { 6 double x,y; 7 DOT(double _x=0,double _y=0){x=_x,y=_y;} 8 DOT operator+(DOT a,DOT b) 9 ... 阅读全文
摘要:
用左偏树模拟攻占的过程,维护最小值,最多入和出m次,每次log复杂度。 阅读全文
摘要:
参见http://blog.csdn.net/popoqqq/article/details/43122821 阅读全文
摘要:
从后向前建主席树,以位置为下标建树,然后查询区间出现次数的第k/2大即可。 复杂度O(nlogn) 阅读全文
摘要:
二维线段树板子,注意标记永久化。 阅读全文
摘要:
这就是区分高中生和小学生爸爸的题目吧。 推导扣一个网上的式子吧 阅读全文
摘要:
前两块可以看成是不是二次剩余,快速幂计算即可。 后半部分可以看成x1=a+b+2ab,x2=a+b-2ab为特征方程x^2-px-qx=0的两根 然后可以通过韦达定理求出p和q,因此递推式为A(n+2)=pA(n+1)+qA(n) 还要用费马小定理化简一下斐波那契数。 矩阵快速幂即可求。 阅读全文
摘要:
嗯哼大步小步法。 一个非常暴力的想法. 注意到如果设C = ⌈√P⌉,那么任何一个数都可以写 成a1 * C + b1的形式,其中a1, b1 都< C. 那么预处理出A^i*C的值.然后在询问时枚举b1. A^a1*C-b1 = B,A^a1*C = B * A^b1. 把A^b1乘一下,再去ha 阅读全文
摘要:
今天下午学习了二项式反演,做了一道错排的题,开始了苦逼的经历。 显然答案是C(︀n,k)︀*H(n − k).其中H(i)为长度为i的错排序列 然后经过课件上一番二项式反演的推导 我就写了个扩展卢卡斯然后交上去了。 一直t啊..... 我算了算复杂度差不多是O(T*P*log^3P) 后来剪了剪枝, 阅读全文
摘要:
转自:http://blog.csdn.net/doyouseeman/article/details/52033204 简介 Cipolla算法是解决二次剩余强有力的工具,一个脑洞大开的算法。 认真看懂了,其实是一个很简单的算法,不过会感觉得出这个算法的数学家十分的机智。 基础数论储备 二次剩余 阅读全文
摘要:
求边双联通分量,然后组成一颗树,叶子结点两两配对即可。 By:大奕哥 阅读全文
摘要:
tarjan求割点,乘法原理统计答案,对数答案翻倍。 By:大奕哥 阅读全文
摘要:
先把矩阵式子化简 原式=∑i=1n∑j=1nA[i]∗B[i][j]∗A[j]−∑i=1nA[i]∗C[i] 因此我们发现问题转化为选取一个点所获收益是B[i][j],代价是C[i][j] 这是一个最小割问题。 先把答案记做所有b的和。 将边按照s——>p[i][j](b[i][j]) p[i][j 阅读全文
摘要:
将最少士兵数转化为最多能删多少士兵建图即可。 By:大奕哥 阅读全文
摘要:
**错误改了一上午。 先做熟练泼粪 k<=5,因此我们可以模拟这个过程,在线段树上把标记建出来然后pushup时候更新就好了。 By:大奕哥 阅读全文
摘要:
给定n,m和k,求有多少对(i , j)满足0 ≤ i ≤ n, 0 ≤ j ≤ min(i ,m)且C(︀i,j)︀是k的倍数.n,m ≤ 1018, k ≤ 100,且k是质数. 把i和j都看成k进制数,事实上这个问题就是问有多少对j ≤ i满足j有一位比i大. 转化成数位DP 对每一位进行转移 阅读全文