08 2018 档案

摘要:题意:给定一棵树,求$S(i)=\sum_{j=1}^{n}dist(i,j)^k$。题解:根据斯特林数反演得到:$n^m=\sum_{i=0}^{n}C(n,i)\times i!\times S(m,i)$故$S(i)=\sum_{k=1}^{m}S(m,k)\times k!\times\su 阅读全文
posted @ 2018-08-29 18:03 HocRiser 阅读(204) 评论(0) 推荐(0)
摘要:求n!在k进制下的位数,n<=1e18 斯特林公式:$n!\approx \sqrt{2\pi n}(\frac{n}{e})^n$ 在n很大的时候有较好的精度保证。 $\log_{k}n!+1=\frac{1}{2}\frac{\ln(2\pi n)}{\ln k}+n\frac{\ln n-\l 阅读全文
posted @ 2018-08-29 16:31 HocRiser 阅读(211) 评论(0) 推荐(0)
摘要:多重背包暴力DP为$O(nV^2)$,n为物品个数,V为背包容量,二进制优化复杂度为$O(nV\log V)$。 1 #include<cstdio> 2 #include<algorithm> 3 #define rep(i,l,r) for (int i=(l); i<=(r); i++) 4 阅读全文
posted @ 2018-08-29 10:08 HocRiser 阅读(143) 评论(0) 推荐(0)
摘要:首先要求每个数互不相等,故有$x\perp y$。 可以发现$\frac{x}{y}$在$k$进制下为纯循环小数的充要条件为$x\cdot k^{len}\equiv x(mod\ y)$,即$y\perp k$。 接下来进行经典的推导:$$\begin{aligned}&\sum\limits_{ 阅读全文
posted @ 2018-08-17 18:32 HocRiser 阅读(313) 评论(0) 推荐(0)
摘要:题意:树上每个点都有颜色,称一个颜色占领一棵子树,当且仅当没有别的颜色在这棵子树内的数量比它多。求所有子树的占领颜色之和。题解:最显然的是DFS序+主席树或莫队,这里使用Dsu on tree。 每次暴力DFS之后,只撤销除重儿子之外的点的贡献。由于重儿子的性质,均摊后复杂度为$O(n\log n) 阅读全文
posted @ 2018-08-08 18:22 HocRiser 阅读(396) 评论(0) 推荐(0)
摘要:求和式的前两项可以直接算,问题是对于每对i,j计算LCP。 一个比较显然的性质是,LCP(i,j)是h[rk[i]+1~rk[j]]中的最小值。 从h的每个元素角度考虑,就是对每个h计算有多少对i,j以它为最小值。 在h中使用单调栈统计左右比它小的第一个元素,相乘得到结果。 阅读全文
posted @ 2018-08-08 10:32 HocRiser 阅读(191) 评论(0) 推荐(0)
摘要:差分之后就是求多串LCS。 对其中一个串建SAM,然后把其它串放在上面跑。 对SAM上的每个状态都用f[x]记录这个状态与当前串的最长匹配长度,res[x]是对每次的f[x]取最小值。答案就是res[]的最大值。 考虑f[x]的求法,把s[]放在SAM上跑时,若下一个能正常匹配(即son[x][c] 阅读全文
posted @ 2018-08-08 10:07 HocRiser 阅读(231) 评论(0) 推荐(0)
摘要:由于每行点的个数不超过1000,所以行内DP可以使用$O(n^2)$算法。 先找到每个点所能直接到达的所有点(x,y,x+y或x-y相同),用排序实现。 第一问:以行为阶段,对于每行,暴力枚举最有路径在这行上的起点和终点,g[x]记录当这行的最优路径以x为起点时,终点应在什么位置,f[x]记录走到x 阅读全文
posted @ 2018-08-07 13:38 HocRiser 阅读(252) 评论(0) 推荐(0)
摘要:首先确定所有点的海拔非0即1,问题转化成裸的平面图最小割问题,进而转化成对偶图最短路(同BZOJ1002)。 这题的边是有向的,所以所有边顺时针旋转90度即可。 如下图(S和T的位置是反的)。 阅读全文
posted @ 2018-08-02 17:46 HocRiser 阅读(318) 评论(0) 推荐(0)