题目链接 https://www.luogu.com.cn/problem/P6082 分析 这题一眼应该就能看出来是树形DP,题目中都多次暗示了,所以先把定义搞出来,最开始我跳了一个坑就是把状态定义成了$DP[i][j]$,即在$i$号节点停留$j$次的最大收益,然后想啊想,就没有然后了。。。。。 ...
分类:
Web程序 时间:
2020-04-04 20:21:29
阅读次数:
73
给定一棵 $n$ 个点的树,初始全是白点,要求你做 $n$ 步操作,每一次选定一个与一个黑点相隔一条边的白点,将它染成黑点,然后获得该白点被染色前所在的白色联通块大小的权值。第一次操作可以任意选点。求可获得的最大权值。 Solution 显然如果选定了开始点,那么答案就是固定的 设开始点为根,则答案 ...
分类:
其他好文 时间:
2020-04-04 11:47:23
阅读次数:
73
"Link" 题意: 边权树形图上删去一些边使所有的叶子节点都无法到达根节点,求删去边的权值和的最小值 思路: 树形 DP 让子树上的叶子节点和根节点不连通,显然只有两种情况:让叶子节点断开或让子树断开 记 $f[x]$ 为让 $x$ 的子树上的叶子节点与根节点断开的最小代价,$dist[x]$ 为 ...
分类:
其他好文 时间:
2020-04-04 10:02:15
阅读次数:
70
A. 水题 1 #include<bits/stdc++.h> 2 using namespace std; 3 char s[10]; 4 int main() 5 { 6 scanf("%s",s+1); 7 if(s[3]==s[4]&&s[5]==s[6])puts("Yes"); 8 el ...
分类:
其他好文 时间:
2020-03-30 09:25:08
阅读次数:
84
题意:给出一颗n个节点的树,这道题数据都是以1为根; 给出一个p,表示留下p个节点,要我们求出留下p个节点删除边的数量最少是多少 思路:树形dp dp【i】【j】 表示i这颗子树保留j个节点所需要删除边的数量最少的权值 那么dp【i】【1】就是把他所有儿子全部去掉,那么就是他son【】的个数 求出来 ...
分类:
其他好文 时间:
2020-03-28 18:14:43
阅读次数:
69
题意:给出一颗树形图,每一条边都有一定权值,叶子节点里面有若干副画 现在有一个小偷要进去偷画,每一条边的权值就是走的时间,偷画需要5秒 给出警察到来时间,问最多能偷多少副画 思路:这是一道树形dp 我们遍历每个节点,从根节点dfs到叶子节点,那么如何进行状态转移呢 我们用一个dp【i】【j】表示在i ...
分类:
其他好文 时间:
2020-03-28 13:08:08
阅读次数:
74
``` #include #include #include #include using namespace std; const int N=3010; int e[N],h[N],ne[N],idx; int f[N][2]; bool st[N]; void add(int a,int b)... ...
分类:
其他好文 时间:
2020-03-25 19:08:37
阅读次数:
74
递推 无后效性,最优子结构 -》状态转移方程 -》 注意初始化 (边界值) -》注意枚举顺序(完全背包第二维从小到大,01背包从大到小,区间先长度再左) LIS接上之前最优解,LCS,背包问题(01背包,完全背包,分组背包,依赖性问题) 状态压缩,树形dp 看过最好的一篇讲解动态规划的 https: ...
分类:
其他好文 时间:
2020-03-23 22:19:08
阅读次数:
86
虚树,顾名思义,就是假的树. 在树形dp中有很大的优化作用. 虚树主要针对于树中关键点的询问.我们仅仅对关键点及其lca建一棵树.这样只要保证sigmak在时间复杂度内即可. 以下是建树的模板 q=read(); for(int i=1;i<=q;++i) { num=read(); for(int ...
分类:
其他好文 时间:
2020-03-14 12:36:13
阅读次数:
50
我记得我学过虚树啊 除了做过的题目有提交的痕迹 脑子空空如也。 今天一定要复习好虚树 我没剩多少时间了。 1.虚树是干嘛的? 对于一道题目 我们发现其每次询问树上的一些点集的某种定义下的答案 通常我们不需要再次遍历整棵树来寻找答案 可以利用题目中给出的这些点集建立一颗不存在的树 即称虚树。 2.如何 ...
分类:
其他好文 时间:
2020-03-14 01:21:11
阅读次数:
51