随笔分类 - 其他 - 模型/总结/重要
摘要:状态还比较自然. 令 $f[x][j]$ 表示 $x$ 的子树全被控制,且多出来 $j$ 层. 令 $g[x][j]$ 表示还需要 $j$ 层才能控制 $x$ 所有子树. 转移 $f[x][j]$ 的时候有两种情况:之前已经控制:$f[x][j]+g[y][j]$,之前没控制:$g[x][j+1]+
        阅读全文
                
摘要:这个题有一个结论:如果用 $x$ 个点能凑出的给点个数在 $[L,R]$ 之间,那么任意 $v\in [L,R]$ 一定能取到. 知道这个结论之后跑一个树形背包就行了,注意在跑背包的时候上界一定要限制好,要不然时间复杂度会多一个 $O(n)$ 的. code: #include <cstdio> #
        阅读全文
                
摘要:Description Viruses are usually bad for your health. How about fighting them with... other viruses? In this problem, you need to find out how to synth
        阅读全文
                
摘要:倒在了性质分析上....(还有仔细读题) 仔细读题后,我们发现红色边只能连接一个连通块和一个叶节点(或两个叶节点). 然后如果一个状态是合法的,当且仅当以某个点为根时所有蓝边都是形如 son[x]->x->fa[x] 然后因为有这条性质,我们就可以进行树形DP了. 令 $1$ 为根,$f[x]$ 表
        阅读全文
                
摘要:Description 给定一颗 N 个点的树,树上的每个点或者是红色,或者是黑色。 每个单位时间内,你可以任选两个点,交换它们的颜色。 出于某种恶趣味,你希望用最少的时间调整结点的颜色,使得对于每个点,离它最近的黑色点与它的距离不超过 x。 Input 输入的第一行包含整数 N 和 x(1 <= 
        阅读全文
                
摘要:这个状态的定义非常难想吧... $f[x][y]$ 表示以 $x$ 为根的子树中,其余点全部移到了应该移动到的位置,也建设了应该建设的仓库,而 $x$ 移动到 $y$ 的最小代价. 这里是事前钦定 $y$ 不建立仓库的. 那么,我们考虑如何从 $x$ 的儿子转移到 $x$: 若 $f[son][b]
        阅读全文
                
摘要:给定 $n$,求一组合法解,使得 $\frac{1}{x}+\frac{1}{y}+\frac{1}{z}=\frac{2}{n}$ 不妨令 $z=n$,则问题转化为 $\frac{1}{x}+\frac{1}{y}=\frac{1}{n}$ 根据我们在高中学习的 "裂项" 法,可知 $\frac{
        阅读全文
                
摘要:这个思路还是非常巧妙的. 困难在于我们需要同时维护以 $x$ 为分治中心,延伸出颜色相同/不同的最大值. 不同的话直接将权和相加,相同的话还需要减掉重复部分,这就比较难办. 但是我们发现,当以 $x$ 为分治中心时,$x$ 每一个儿子为根的子树的延伸颜色都是相同的. 所以我们可以将每一个点的所有儿子
        阅读全文
                
摘要:题意:给定一棵树,每次钦定一个点为根,求以这个点为根时每个点子树权和平方之和,有单点修改. 虽然有修改,但是没有换根操作(等于说每次询问时只换依次根) 我们初始的时候不妨令 $1$ 为根,并考虑当根为 $x$ 时与根为 $1$ 时的差别. 我们发现,当根为 $x$ 时,子树权和发生改变的只是 $1$
        阅读全文
                
摘要:就是喜欢后缀自动机,yy了一个只用后缀自动机解决的方法. 对 3 个串建立广义后缀自动机,然后建立后缀树. 标记出每个点在0/1/2个串中是否作为子串出现,然后将后缀树中 2 串结尾的所有子树都设为危险节点. 然后对于 SAM 来一个拓扑序DP,我们开始的时候默认危险节点的最大值是 -inf,然后 
        阅读全文
                
摘要:维护 $\sum_{}v[i]\times dep[i]$ 与 $\sum_{} v[i]\times dep[i]^2$ 其中 $dep[i]$ 表示 $i$ 点在该点所在 $LCT$ 的 $splay$ 中的中序遍历序. 然后正着维护一个,反着维护一个就行了. #include <cstdio>
        阅读全文
                
摘要:这个期望显然可以表示成总价值/总方案数. 然后我们用线段树依次维护 $\sum val[i]$,$\sum val[i]\times i$,$\sum val[i]\times i^2$ 即可. code: #include <cmath> #include <cstdio> #include <s
        阅读全文
                
摘要:貌似是套路题. 假设给定我们一些区间,那么这些区间交集的左端点是左端点最靠右区间的左端点. 所以我们将所有区间按照左端点从小到大排序,然后用堆维护前 k 大的右端点. 那么,对于枚举到的第 $i$ 个区间来说,右端点就是第 $k$ 大的右端点与当前区间右端点的较小值. code: #include 
        阅读全文
                
摘要:推一推式子后发现每个点不论走几步被访问到的概率都是 $\frac{d_{i}}{2m}$ code: #include <cstdio> #include <string> #include <algorithm> #define N 100070 #define ll long long #def
        阅读全文
                
摘要:和【洛谷5115】挺像的. 都是统计信息的时候是包含两个树的,那就在一个树上边分治,另一个树上跑一个虚树dp就好了. 式子这么拆: $dep[i]+dep[j]-(dep[LCA(i,j)]+dep'[LCA'(i,j)]$ $\Rightarrow dep[i]+dep[j]-\frac{1}{2
        阅读全文
                
摘要:绝对是我写过最长的一份代码了. 这个快敲吐了. 通过这道题能 get 到一个套路: 两颗树同时统计信息的题可以考虑在个树上跑边分治,把点扔到另一颗树的虚树上,然后跑虚树DP. 具体地,这道题中我们发现 $LCP$ 长度是反串后缀树 $LCA$ 深度,$LCS$ 是正串后缀树 $LCA$ 深度. 我们
        阅读全文
                
摘要:这是一道边分治的例题. 一般来说,我们在树上求最优化问题或者求点值固定,但是和边权和有关的问题时可以考虑用一下边分治. 不同与点分治是以点为重心边分,边分治是以边为重心进行分治的. 我们知道,一个点可以和若干条边相连,但是一条边只能连接两个端点,这在统计上就给我们提供了方便(统计两个树的影响就行) 
        阅读全文
                
摘要:推式子没推出来什么特别有用的结论. 看题解后发现这尼玛就是一个大爆搜啊. 以后碰到这种推式子推不出来,或者没啥思路的时候可以考虑爆搜解决. code: #include <cstdio> #include <string> #include <cstring> #include <algorithm
        阅读全文
                
摘要:这个和 QTREE5 的套路是一样的,就是维护一个深度最深/浅的距离和,然后合并一下就好了. code: #include <map> #include <string> #include <cstdio> #include <cstring> #include <algorithm> #defin
        阅读全文
                
摘要:注意:$LCT$ 在 $link$ 的时候必须要 makeroot. 假如要将 $y$ 连到 $x$ 上: 如果只是将 $y$ Access 并 splay 然后直接连到 $x$ 上的话你会发现 $y$ 在 $splay$ 中所有左儿子其实都在 $(x,y)$ 之间,而这显然就不对了. code: 
        阅读全文
                

浙公网安备 33010602011771号