P2986 [USACO10MAR]伟大的奶牛聚集Great Cow Gat… 题目描述 Bessie is planning the annual Great Cow Gathering for cows all across the country and, of course, she would like to choose the most convenient location for the gathering to take place. Each cow lives in on…
题目描述 Bessie is planning the annual Great Cow Gathering for cows all across the country and, of course, she would like to choose the most convenient location for the gathering to take place. Each cow lives in one of N (1 <= N <= 100,000) different ba…
题目大意:给你一棵树,每个点有点权,边有边权,求一个点,使得其他所有点到这个点的距离和最短,输出这个距离 题解:树形$DP$,思路清晰,转移显然 卡点:无 C++ Code: #include <cstdio> #include <algorithm> #define maxn 100010 const long long inf = 0x3f3f3f3f3f3f3f3f; int head[maxn], cnt; struct Edge { int to, nxt, w; } e…
dp这一方面的题我都不是很会,所以来练(xue)习(xi),大概把这题弄懂了. 树形dp就是在原本线性上dp改成了在 '树' 这个数据结构上dp. 一般来说,树形dp利用dfs在回溯时进行更新,使用儿子节点对父亲节点进行更新. 树形dp很多题需要在二叉树上进行. 进入正题. 点我看题 这个图是洛谷题面里奇奇怪怪的东西,格式弄好就这样. 题意:有一棵已知根(1)的二叉树,每条边都有一个权值,现在可以保留 q 条边,问在这样的前提下,以 1 为根 的树最多能有多少权值和. 题意可以画个图来解释 这个…
洛谷题面传送门 经典题一道,下次就称这种"覆盖距离不超过 xxx 的树形 dp"为<侦察守卫模型> 我们考虑树形 \(dp\),设 \(f_{x,j}\) 表示钦定了 \(x\) 子树内的点选/不选的状态,且 \(x\) 子树内必须要被覆盖的点都被覆盖,\(x\) 的 \(1\sim j\) 级祖先都被覆盖了的最小代价,再设 \(g_{x,j}\) 表示 \(x\) 子树内距离 \(x\ge j\) 的必须要被覆盖的点都被覆盖,而 \(x\) 子树内距离 \(x\) \(&…
洛谷题面传送门 神仙级别的树形 dp. u1s1 这种代码很短但巨难理解的题简直是我的梦魇 首先这种题目一看就非常可以 DP 的样子,但直接一维状态的 DP 显然无法表示所有情况.注意到对于这类统计一个路径上权值之和的最值这样的问题,我们可以考虑借鉴 P4383 林克卡特树 的套路,即在 DP 状态中多记录一维 \(j\) 存储当前路径的延伸情况.但是这道题与 林克卡特树 的不同之处在于路径并非是简单路径,即一条路径可以先向上走一段,再向下走一段,接着再向上走一段.因此考虑这样设计 DP 状态:…
第一次自己写树形DP的题,发个博客纪念`- 题目来源:P1352 没有上司的舞会 题目描述 某大学有N个职员,编号为1~N.他们之间有从属关系,也就是说他们的关系就像一棵以校长为根的树,父结点就是子结点的直接上司.现在有个周年庆宴会,宴会每邀请来一个职员都会增加一定的快乐指数Ri,但是呢,如果某个职员的上司来参加舞会了,那么这个职员就无论如何也不肯来参加舞会了.所以,请你编程计算,邀请哪些职员可以使快乐指数最大,求最大的快乐指数. 输入输出格式 输入格式: 第一行一个整数N.(1<=N<=60…
题目链接 题目背景 一座城市,往往会被人们划分为几个区域,例如住宅区.商业区.工业区等等.B市就被分为了以下的两个区域--城市中心和城市郊区.在着这两个区域的中间是一条围绕B市的环路,环路之内便是B市中心. 题目描述 整个城市可以看做一个N个点,N条边的单圈图(保证图连通),唯一的环便是绕城的环路.保证环上任意两点有且只有2条路径互通.图中的其它部分皆隶属城市郊区. 现在,有一位名叫Jim的同学想在B市开店,但是任意一条边的2个点不能同时开店,每个点都有一定的人流量Pi,在该点开店的利润就等于该…
P2458 [SDOI2006]保安站岗 没学树形DP的,看一下. 题目大意:一棵树有N个节点,现在需要将所有节点都看守住,如果我们选择了节点i,那么节点i本身,节点i的父亲和儿子都会被看守住. 每个节点有一个选择代价,求完成任务所需要的最小的代价. 分析:根据每个节点其实有只有三个状态: ①被自己看守:②被儿子看守:③被父亲看守. 我们设这三种状态分别为F1,F2,F3. 当然最终作为答案的根节点没有父亲就没有F3. 接下来我们要考虑怎么转移. 首先看F1,我们规定F1[ i ]代表的是i节点…
题目:https://www.luogu.org/problemnew/show/P2279 题意:一棵树.在节点处建消防站,可以覆盖与他距离在2之内的节点.问最少要建多少个消防站,可以覆盖所有的节点. 思路:有一种贪心的思路,看大部分题解都是这样. 如果要覆盖当前节点(自己不建),那么可能是父亲,兄弟,祖父建了. 但是我们发现,在祖父建覆盖的范围比父亲兄弟要更广一些.所以就贪心的取深度最深的节点,在他的祖父处建一个. 因为想练dp所以没写贪心的. 看结构感觉是树形dp.$dp[i]$表示以$i…