
树形DP
YiPeng_Deng
这个作者很懒,什么都没留下…
展开
-
LOJ#3385/JZOJ6908. 「COCI 2020.11」Svjetlo
Description 传送门 Solution 考虑最后的路径是什么样子,首先每一条边最多经过四次,即来回两次,因为我们可以通过递归解决一条边下面的子树,然后再根据这个点当前的奇偶性,考虑经过这条边两次还是四次(即横跳一次还是两次)。 有了这个简单的思路,我们就可以直接树形DP了,一条路径把它拆分到每一条边上计算,记录f[x][0/1/2][0/1]f[x][0/1/2][0/1]f[x][0/1/2][0/1]表示xxx的子树内,有0/1/20/1/20/1/2个路径端点,xxx的灯是0/10/1原创 2020-11-30 21:47:23 · 586 阅读 · 0 评论 -
agc022F Checkers
agc022F Checkers 有nnn个数,第iii个数一开始为(10100)i(10^{100})^i(10100)i,现在进行n−1n-1n−1次操作,选择两个数x,yx,yx,y,将它们变为2x−y2x-y2x−y。 求最后的剩下的数有多少种结果。n≤50n\le50n≤50 Solution 一开始想的是建成一个二叉树,左儿子乘−1-1−1,右儿子乘222,但是我们不知道222次幂相同有什么排布规律使得它不算重,所以我们考虑将这个二叉树上的所有−1-1−1的边缩起来。 那么我们会得到一棵树原创 2020-10-15 21:01:07 · 226 阅读 · 0 评论 -
JZOJ6815. 【2020.10.06提高组模拟】树的重心
Description 求大小为nnn的树上所有大小为kkk的连通块的重心权值之和(如果有两个重心,取编号小的那个)。 n≤5e4,k≤500n\le5e4,k\le500n≤5e4,k≤500 Solution 显然可以得到一种O(nk2)O(nk^2)O(nk2)的换根DP,直接枚举子树内选择的点数转移即可。 经典套路:如果没有换根DP的部分,直接做大小为kkk的树形背包的复杂度实际上是O(nk)O(nk)O(nk)的(而不是O(nk2)O(nk^2)O(nk2))。 证明:原创 2020-10-06 22:22:12 · 238 阅读 · 0 评论 -
JZOJ6702. 【2020.06.07省选模拟】仙人掌(cactus)
Description n<=1e5,m<=2e5n<=1e5,m<=2e5n<=1e5,m<=2e5 Solution 一开始对于矩阵的行列式啥的以为跟矩阵树有关系,但是又不好套,就以为是一些我所不知道的神仙知识点,于是就没有直接往行列式的定义上去想了。 考虑行列式的定义来计算——选择一个排列,计算它的逆序对个数,加在一起(因为所有权值都是1)。 那么再考虑排列在图上的贡献,相当于是选了n条边,i连向p[i],这样会形成若干个环。 但是由于这些p在原矩阵中是交叉的,原创 2020-06-06 19:34:13 · 437 阅读 · 0 评论 -
JZOJ6438. 【GDOI2020模拟01.16】树上的鼠
Description n<=1e6n<=1e6n<=1e6 Solution 首先考虑简单的情况——一条链。 假设链是奇数长度,如果根在链的中点,那么先手的不管怎么移,后手的都可以移到它的对称点。反之根不在链的中点,先手的就可以移到中点,获得主动权。 假设链长度偶数,那么可以移到远离当前点的两个中点之一,那么接下来的策略也之前的情况是一样的。 那么当且仅当链长度为奇数,且根...原创 2020-01-16 22:42:23 · 400 阅读 · 0 评论 -
JZOJ6407. 【NOIP2019模拟11.05】小 D 与随机
Description n<=5000n<=5000n<=5000 Solution 神仙计数题。 考虑树形DP。 为了DP的方便,有一种很骚的操作,因为是对于每一个恰好为c个好点的状态求kck^ckc,我们为了复杂度不好记录c。 但是我们可以将它转化为至少c个好点。 kc=∑i=0cCci∗(k−1)ik^c=\sum_{i=0}^{c}C_c^i*(k-1)^ikc=i=...原创 2019-11-05 22:45:07 · 663 阅读 · 0 评论 -
JZOJ6392. 【NOIP2019模拟2019.10.26】僵尸
Description 传送门 T<=5,1<=n,m<=2000,1<=li,ri,hi<=1e9T<=5,1<=n,m<=2000,1<=li,ri,hi<=1e9T<=5,1<=n,m<=2000,1<=li,ri,hi<=1e9 Solution 首先很容易想到的是求所有节点都被占领的概率,也就是...原创 2019-10-27 17:05:45 · 351 阅读 · 0 评论 -
JZOJ6353. 【NOIP2019模拟】给(ca)
Description N,M<=5000 Solution 刚开始想将它变成二进制数的生成,后来发现还没有树形结构简单。直接设f[n][m]为有n个叶子,往左的边有m条,枚举左子树的叶子个数,n3转移就有35分了。 然而我的枚举顺序打错了,GG. 正解十分巧妙。 由于我们一层一层地枚举叶子数DP是会T的,所以我们需要换一种DP的思路。 如果我们按照DFS序DP呢?设f[x][i]表示当...原创 2019-09-13 15:42:55 · 323 阅读 · 0 评论 -
SG函数学习小计
参考博文 SG函数的定义 SG函数用于Nim游戏中 定义mex(S)表示不在S集合中的最小整数 对于任意状态 x , 定义 SG(x) = mex(S),其中S为x的后继状态的集合 假设x状态先手必败,那么令SG(x)=0 SG定理(重要) 如果当前游戏可以看成很多个互不相关的子游戏,那么SG(x)=SG(x1) xor SG(x2) xor SG(x3)… 其中x1,x2,x3…为x可以划...原创 2019-08-03 08:15:46 · 267 阅读 · 0 评论 -
【凸优化】【长链剖分】【2019冬令营模拟1.8】tree
PROMBLEM 给你一棵树,你需要在树上选择恰好 m条点不相交的、长度至少为 k的路径,使得路径所覆盖的点权和尽可能大。求最大点权和。 数据保证有解。 SOLUTION 这是一道综合的题目,考察凸优化、长链剖分、树形DP、以及关于数组空间的优化 首先引进凸优化 凸优化就是关于答案可以表示成一个凸函数 f(y),x是题目给出的参数,并且 这个函数的斜率成下降的趋势(反过来也可以) 假设...原创 2019-01-12 13:30:30 · 306 阅读 · 0 评论