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