摘要:
莫比乌斯反演推柿子,数论分块降复杂度,最后时间复杂度为O(n)。 阅读全文
摘要:
原问题转化为求有多少个二元组(x,y)满足 x≤a/k,y≤b/k 且 gcd(x,y)=1。 我们获得两个函数f(i)和g(i)。 f(i)表示满足 x≤a,y≤b 且 gcd(x,y)=i 的二元组个数,g(i)表示满足 x≤a,y≤b 且 gcd(x,y) 为 i 的倍数个二元组个数。 发现 阅读全文
摘要:
线性筛求莫比乌斯函数 阅读全文
摘要:
考虑c固定时快速算出所有位置的最小差异值, 把平方拆掉后构造一下发现是个卷积形式,fft即可。 m的范围很小,且答案关于m是一个单峰函数,所以我一开始以为是三分m,算了算复杂度好像很可过的样子, 写出来后发现不开O2只有70分(BZOJ可过) 看了别人的程序才知道c可以直接算出来!!! 其实只要让两 阅读全文
摘要:
建出AC自动机,获得fail树,发现问题转化成求以x为根的子树中有多少个属于y串的节点。 求出fail树的dfs序,由dfs序的性质可知以x为根的子树在dfs序上是连续的。 在trie树中跑一边dfs,dfs过程中用树状数组统计答案即可。 注意fail树的节点数是tot+1。 阅读全文
摘要:
KMP算法:洛谷3375 根据我的理解,把next数组改成了fail数组。 AC自动机:洛谷3808 upd: 2018.3.14 重打了AC自动机的模板 (原来的好丑。。) 阅读全文
摘要:
把所有串接在一起,用不同的分隔符分隔, 然后跑后缀数组。。 对于每个询问串暴力跑出height大于询问串长度的区间统计答案即可。。。。。。。。。。。。。。但是在洛谷上这种做法被卡掉了 面向数据加个优化水过。 阅读全文
摘要:
获得原数列的差分数列,离散化后接在一起,中间用没有出现过的数分隔,于是问题就转化成求这个数列的最长重复子串,且每一段上都至少有一个子串。 求出后缀数组,二分答案即可。 阅读全文
摘要:
注意x,y数组的意义 x[i]表示编号为i的后缀的第一关键字 y[i]表示第二关键字排名为i的后缀编号 h[i]表示编号为i的后缀与其前一名的最大公共前缀 height[i]表示排名为i的后缀与其前一名的最大公共前缀 h[i]>=h[i-1]-1 代码打的比较丑,有时间重新打一遍 阅读全文
摘要:
简单莫队 阅读全文