09 2016 档案
摘要:先简短几句话说说FFT.... 多项式可用系数和点值表示,n个点可确定一个次数小于n的多项式。 多项式乘积为 f(x)*g(x),显然若已知f(x), g(x)的点值,O(n)可求得多项式乘积的点值。 我们所需要的就是O(nlogn)快速地将两个系数多项式表示成点值多项式,O(n)求得乘积的点值表示
阅读全文
摘要:用manacher算法O(n)求出所有的回文半径。有了回文半径后,就可以求出L[i]表示以i结尾的回文串的起始位置的和R[i]表示以i起始的回文串的结尾位置的和,然后就可以求出答案了,这里要注意奇偶长度回文串的不同处理。复杂度O(n) 1 #include<bits/stdc++.h> 2 usin
阅读全文
摘要:取出纵向边按x坐标排序,在y方向上建立线段树。 每次查询当前有效长度len,ans += len*(x[i]-x[i-1]); 其中len为T[rt].len; 查询完毕后更新y方向上线段树,入边+1, 出边-1。 1 #include<bits/stdc++.h> 2 using namespac
阅读全文
摘要:比赛的时候知道用树状数组,但有点乱不知道怎么处理。 统计不同的gcd的个数其实就是用树状数组统计区间内不同的数的模板题啊... 复杂度O(nlogn) 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int N = 1e5+10;
阅读全文
摘要:递归写法,好久不写很容易就gg了... dp[i]=max(dp[j])+1,并且s[i]XORs[j]<=x 01字典树优化一下转移。 1 #include <bits/stdc++.h> 2 3 #define ll long long 4 #define ull unsigned long l
阅读全文

浙公网安备 33010602011771号