摘要:
DSU on tree 树上启发式合并 自为风月马前卒dalao的博客 首先介绍一下大概流程: 首先处理所有轻链。 如果有重链,再处理重链。注意重链的值不删除。 这样只需要把轻链的贡献算一下加上就好了,不需要处理重链。 最后,如果是轻链,就要删除其对贡献的影响。 void dfs(int u, in 阅读全文
摘要:
161D. Distance in Tree (树形DP) Distance in Tree 题意:给一棵树,找两点距离为K的节点对个数 题解: \(dp[i][j]\) 表示 i 节点子树距离 i 为 k 的节点个数。DP转移为: \[ dp[u][0] = 1 \\ dp[u][j] = \su 阅读全文
摘要:
Codeforces Round #568 (Div. 2) D - Extra Element 补题地址 这道题题的突破口就在这个"去掉一个值", 这说明你除了去掉的点其他点排序后相邻距离d是一样的。所以我们直接考虑这个d是多少,然后看能不能去掉一个点达到要求。显然不能枚举d,但是由于只去掉1个点 阅读全文
摘要:
#include<bits/stdc++.h> using namespace std; #define rep(i, a, n) for(int i = a; i <= n; ++ i); #define per(i, a, n) for(int i = n; i >= a; -- i); typ 阅读全文
摘要:
2020暑假牛客多校9 B - Groundhog and Apple Tree (树形dp) 补题链接 参考博客 题目大意: 给一个树,走每条边会减hp, 走到点会加hp,原地等待也会加hp, 问最少原地等待时间使得能够遍历所有点。每条边最多走两次。 题解: 首先每条边最多走两次那也就dfs一遍树 阅读全文
摘要:
C Decrement on the Tree 参考博客 题目: 一棵树每次选择一条路径将路径上的边权都减1,问最少多少次操作后所有边权变成0。 题解: 看了好几篇博客才明白了,这道题的做法是将对边权的处理转变成去想对点的处理,算各点的贡献。之所以可以这样做是基于给一条边的边权-1,相当于访问这条边 阅读全文
摘要:
暑假补题记录 dx1 [ ] A:后缀数组,结论题 [ ] B: [ ] C [ ] D [ ] E [x] F:签到 [ ] G [x] H:最小费用流 [x] I::最大流(, 带花树匹配 [x] J:数论公式 dx2 [ ] A [ ] B [x] C [x] D [ ] E [ ] F [ 阅读全文