摘要:struct AC_automation { int L; int next[maxnode][sigma_size]; int val[maxnode]; int fail[maxnode], last[maxnode]; int newnode() { ...
阅读全文
摘要:枚举n的约数d,∑d*phi(d) 就是所求答案,剩下的就是参考别人的证明。化简 p^i*phi(p^(k-i)) 可得 p^k - p^(k-1) ,注意特判 k==i的情况,注意LL。#define _CRT_SECURE_NO_WARNINGS#pragma comment(linker, "...
阅读全文
摘要:线段树可以搞搞,按端点排个序,然后每次找端点以内最大的,然后删除。学了下并查集的搞法。先按价值贪心,每次拿走一个价值的时候,将这个价值所在集合的日期,推前一天,表示接下来日期在这段数内的物品只能在这段时间之前取,这个物品能取得日期为0的时候代表没法取了。#pragma comment(linker,...
阅读全文
摘要:给出一个小写字母组成的字符串,然后q个操作,a,b,c ,c为0 ,将区间 [a,b] 按逆字典序排,c为1,将此区间按字典序排。用一颗线段树,维护每个节点各个字母出现的种类数,每次操作操作后,暴力将字母a组成的区间,字母b组成的区间等等,区间内所有元素更新为a,b,等等。打个lazy标记,区间更新...
阅读全文
摘要:题意:问小于n且不与n互质的数的和是多少。容斥原理求出和n互质的和,然后用 n*(n-1)/2 减以下,注意溢出。#pragma comment(linker,"/STACK:102400000,102400000") #define _CRT_SECURE_NO_WARNINGS#include#...
阅读全文
摘要:若GCD(a,b) = 1,GCD(a,a-b) = 1
阅读全文
摘要:就是计算 区间[1,b/k] [1,d/k] 互质的对数,(3,4) 和(4,3)算一种。每次只加比他大的就行了。#pragma comment(linker,"/STACK:102400000,102400000") #define _CRT_SECURE_NO_WARNINGS#include#...
阅读全文
摘要:人在(0,0)点,问n*m的矩阵上的点有多少可以与人直接可见,其实就是矩阵上点与(0,0)点的形成的斜率种类数。#pragma comment(linker,"/STACK:102400000,102400000") #define _CRT_SECURE_NO_WARNINGS#include#i...
阅读全文
摘要:题意:求第k个与m互质的数。容斥原理求出[1,L]与m互质的数,然后二分k即可。#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#include#include#include#include#include#includ...
阅读全文
摘要:题意:在树上找一条链,使得链上点的乘积对1e6+3取模为k由于mod是质数,a*b%mod = c -> b = inv[a] * k;剩下就是树上的点分治了,每次划分重心之后,将所有点到根的距离存入hash表,并且在存入hash表的同时,可以查找此子树内过根符合条件的路径端点,并更新答案,每次以重...
阅读全文
摘要:求A到B之间有多少个数能与N互质。学了下容斥原理的写法, 想将N分解质因数,然后容斥原理,N - 单个质因数倍数个数+2个质因数倍数的个数-3个质因数的个数......#define _CRT_SECURE_NO_WARNINGS#include#include#include#include#in...
阅读全文
摘要:有关论文:运用伸展树解决数列维护问题算法合集之《伸展树的基本操作与应用》splay的伸展操作 splay(x,goal)将x节点移到goal节点的下方,通过左旋和右旋基本操作实现,其实现过程在论文中有详细介绍。对于用splay去维护一个数列,有以下常用操作。1.splay(x,goal) 将结点k旋...
阅读全文
摘要:有关点分治的论文:国家集训队2009论文集分治算法在树的路径问1.树的重心:删去某个节点,使得结点最多的树结点最少,这个结点称为树的重心。2.每次选取树的重心,对其子树进行分治,递归深度最坏是 logn,论文中有证明。3.基本解法,如果求点对对数,分为路径经过根与不经过根两种情况,我们需要求对于每个...
阅读全文