01 2019 档案
摘要:D1T1:潜入行动 裸的树上DP。f[i][j][0/1][0/1]表示以i为根的子树放j个设备,根有没有放,根有没有被子树监听,的方案数。转移显然。 1 #include<cstdio> 2 #include<algorithm> 3 #define rep(i,l,r) for (int i=(
阅读全文
摘要:有些题目,在要求支持link-cut之外,还会在线询问某个子树的信息。LCT可以通过维护虚边信息完成这个操作。 对于LCT上每个节点,维护两个两sz和si,后者维护该点所有虚儿子的信息,前者维护该点的所有信息和。 那么显然有:$si[x]=\sum sz[pson]$,$sz[x]=sz[lson]
阅读全文
摘要:同[BZOJ4817]树点涂色,只是多了换根操作,分类讨论下即可。
阅读全文
摘要:和[BZOJ3730]震波几乎一样,每个点建两棵线段树分别代表它的管辖范围内以它为LCA的路径的贡献和它对父亲的贡献。 注意点分树上的点的距离在原树上不单调,所以不能有若距离超出限制就break之类的判断。
阅读全文
摘要:很裸的子集反演模板题,套上一些莫名其妙的外衣。 先预处理每个集合是否合法,再作显然的状压DP。然后发现可以写成子集反演的形式,直接套模板即可。 子集反演可以看这里。 子集反演的过程就是多设一维代表集合大小,再FMT处理集合并卷积。 然而我的FMT常数过大,而并卷积又可以用FWT实现,于是就写FWT了
阅读全文
摘要:DP式很容易得到,发现是线性递推形式,于是可以矩阵加速。又由于是区间形式,所以用线段树维护。 https://www.cnblogs.com/Miracevin/p/9124511.html 关键在于证明区间操作中,可以直接在打标记的位置翻转矩阵两行两列。 上面网址用代数形式证了一遍,这里考虑从矩阵
阅读全文
摘要:由于有很多本质相同的重复置换,我们先枚举各种长度的点循环分别有多少个,这个暴搜的复杂度不大,n=53时也只有3e5左右。对于每种搜索方案可以轻易求出它所代表的置换具体有多少个。 但我们搜索的是点置换组成的循环,要求的是边置换组成的循环。现在问题就是对于每种搜索方案,求出有多少个边循环。 首先,如果一
阅读全文
摘要:https://blog.csdn.net/dream_maker_yk/article/details/80377490 斯特林数有时并没有用。
阅读全文
摘要:https://www.cnblogs.com/zwfymqz/p/9332753.html 由于欧拉函数是积性函数,可以用乘法分配律变成对每个质因子分开算最后乘起来。再由欧拉函数公式和分配律发现就是等比数列求和问题,特判下1的问题就好了。
阅读全文
摘要:每个线段树维护一个行向量[A,B,C,len]分别是这个区间的A,B,C区间和与区间长度,转移显然。 以及此题卡常,稍微哪里写丑了就能100->45。
阅读全文
摘要:$\sum\limits_{T=1}^{n}\lfloor\frac{n}{T}\rfloor\lfloor\frac{m}{T}\rfloor\sum\limits_{d|T}f(d)\mu(\frac{T}{d})$ 求出$g(n)=\sum_{d|T}f(d)\mu(\frac{n}{d})$
阅读全文
摘要:$\sum\limits_{p=1}^{n}p^p\sum\limits_{d=1}^{\lfloor\frac{n}{p}\rfloor}\mu(d)d^{2p}\sum\limits_{i=1}^{\lfloor\frac{n}{pd}\rfloor}i^p\sum\limits_{j=1}^{
阅读全文
摘要:由裴蜀定理得,一个集合S能得到w当且仅当gcd(S+{P})|w。 于是f[i][j]表示前i个物品gcd为j的方案数,发现gcd一定是P的因数,故总复杂度$O(n\sqrt{P}\log P)$(需要二分或者map)。 又发现,将所有数a[i]全都变成gcd(a[i],P)对答案是没有影响的,于是
阅读全文
摘要:首先注意到每种树都是等概率出现的,于是将问题转化成计数求和问题。 f[n]表示所有n个点的树的两两点距离和的总和。 g[n]表示所有n个点的树的所有点到根的距离和的总和。 h[n]表示n个点的树的可能形态数。 转移: f[n]+={[f[i]+(g[i]+h[i]*i)·(n-i)]·h[n-i-1
阅读全文
摘要:https://www.cnblogs.com/Gloid/p/10273902.html 这篇文章已经从头到尾讲的非常清楚了,几乎没有什么需要补充的内容。 首先$O(n\log^2 n)$的做法比较显然,倍增优化建图+最短路即可。 然后利用“每个塌陷最多会被使用一次”的性质,为每个塌陷(边也看作一
阅读全文
摘要:显然f[i][j]表示S匹配到第i个通配符,T匹配到第j个字符,是否可行。 一次一起转移两个通配符之间的所有字符,Hash判断。 稍微有点细节。常数极大卡时过排名倒数,可能是没自然溢出的原因。
阅读全文
摘要:1.向量点积同二维,x1y1+x2y2+x3y3。向量叉积是行列式形式,(y1z2-z1y2,z1x2-x1z2,x1y2-y1x2)。 2.增量构造法: 1)首先定义,一个平面由三个点唯一确定。一个平面是有方向的,它的法向量只有一个方向(即逆时针相邻两向量的叉积的方向)。 2)初始时只有(p1,p
阅读全文
摘要:对于点集$A$,$B$,闵可夫斯基和$C=\{(x1+x2,y1+y2)|(x1,x2)\in A,(y1,y2)\in B\}$。由此可知,对于两个凸包$A$,$B$的闵可夫斯基和$C$满足,$C$中的向量是所有$A$中向量与$B$中向量的和的并集。可以证明,$C$也是一个凸包。现在问题是要求,对
阅读全文
摘要:https://www.cnblogs.com/CQzhangyu/p/7891363.html 不难推到$\sum\limits_{D=1}^{m_1}\sum\limits_{d|D}C_{d-1}^{c-2}\mu(\frac D d)\prod\limits_{i=1}^n\frac {(2
阅读全文
摘要:显然有决策单调性,但由于逆序对不容易计算,考虑分治DP。 solve(k,x,y,l,r)表示当前需要选k段,待更新的位置为[l,r],这些位置的可能决策点区间为[x,y]。暴力计算出(l+r)/2的决策位置s,两边递归下去继续操作。solve(k,x,s,l,mid-1),solve(k,s,y,
阅读全文
摘要:[BZOJ5099][POI2018]Pionek(极角排序+two pointers) 几个不会严谨证明的结论: 1.将所有向量按极角排序,则答案集合一定是连续的一段。 当答案方向确定时,则一个向量会被选入答案集合当且仅当向量在答案方向上的投影一定都是正的 所以,两个选中向量中间隔着一个向量,则必
阅读全文
摘要:如果没有秒杀,就是经典的国王游戏问题,按t/a从小到大排序即可。 考虑删除两个数i<j能给答案减少的贡献:S[i]*T[i]+P[i-1]*A[i]-A[i]+S[j]*T[j]+P[j-1]*A[j]-A[j]-T[i]*A[j] 其中P为T=(D-1)/ATK+1的前缀和,S为A的后缀和。 我们
阅读全文
摘要:考虑l=1,r=n的68分,对S和T建SAM,对T的SAM上的每个节点,计算它能给答案带来多少贡献。 T上节点x代表的本质不同的子串数为mx[x]-mx[fa[x]],然后需要去掉所代表子串与S的最长公共子串的长度。 从1到length(T)扫一遍,SAM基本操作求出每个前缀与S的最长公共子串。 答
阅读全文
摘要:不要以为用上Stirling数就一定离正解更近,FFT都是从DP式本身出发的。 设f[i]为i个积木的所有方案的层数总和,g[i]为i个积木的方案数,则答案为$\frac{f[i]}{g[i]}$ 转移枚举第一层是哪些积木:$$f_n=g_n+\sum_{i=1}^{n}\binom{n}{i}f_
阅读全文
摘要:https://blog.csdn.net/WAautomaton/article/details/85057257 解法一:后缀数组 显然将原数组差分后答案就是所有不相交不相邻重复子串个数+n*(n-1)/2。 答案=重复子串个数-相邻或相交重复子串个数。 前者单调栈直接求解,注意细节,重点在后者
阅读全文
摘要:https://minamoto.blog.luogu.org/solution-p5106 容易想到枚举质因子及其次数计算其贡献,容斥计算$\varphi(p^i)$的次方数。
阅读全文
摘要:首先集合去重不影响答案,然后打表易得连续自然数平方差异或前缀和的规律,于是问题就变为在线维护区间求并同时更新答案,set记录所有区间,每次暴力插入删除即可。由于每个区间至多只会插入删除一次,故均摊复杂度$O(n\log n)$
阅读全文

浙公网安备 33010602011771号