摘要:
嘟嘟嘟 一看完题我就知道是树形dp,状态都想出来了:dp[i][j]表示以 i 为根节点的子树,选了 j 个用户时的最大利润。然后我就卡住了……直到看题解的那一刻…… 题解说:树形背包。于是我就知道为什么gg了:我总共就做了一道树形背包。 思路大概是这样的:对于一个节点u,枚举他的儿子v,然后dfs 阅读全文
posted @ 2018-09-13 20:09
mrclr
阅读(171)
评论(0)
推荐(0)
摘要:
嘟嘟嘟 这好像是一种树上背包。 我们令dp[i][j] 表示在 i 所在的子树中(包括节点 i)分离出一个大小为 j 的子树最少需割多少条边。 那么转移方程就是 dp[u][j] = min(dp[u][j], dp[u][j - k] + dp[v][k] - 1) (v是u的一个儿子) 理解起来 阅读全文
posted @ 2018-09-13 17:42
mrclr
阅读(170)
评论(0)
推荐(0)
摘要:
嘟嘟嘟 题说的很明白,就是求树的重心。 我们首先dfs一遍维护每一个点的子树大小,然后再dfs一遍,对于一个点u,选择子树中size[v]最小的那个和n - size[u]比较,取最大作为删除u后的答案Max[u]。 然后再O(n)遍历一遍取min(Max[i]). 写代码的时候两次dfs可以合并。 阅读全文
posted @ 2018-09-13 15:50
mrclr
阅读(177)
评论(0)
推荐(0)
摘要:
嘟嘟嘟 树形dp。 首先一个很常规的想法就是如果u到v有一条边,那么建立cost(u, v) = 0, cost(v, u) = 1的两条边. 可以两遍dfs。 先任选一个点作为根节点,第一遍从下往上dfs,维护节点u到他的所有子节点的距离,很容易得出dis[u] = ∑dis[v] + cost( 阅读全文
posted @ 2018-09-13 14:43
mrclr
阅读(213)
评论(0)
推荐(0)
摘要:
嘟嘟嘟 题目大意就是对于一个m面的骰子,回答这么两个问题: 1.求连续扔n次都是同一数字的期望次数。 2.求连续扔n次每一次数字都不相同的期望次数。 对于期望dp特别菜的我来说,这道题已经算是很难了。反正是抠了一天…… 我们先看第一问。 令fi表示连续 i 次数字都相同的期望,那么要考虑他能转化到什 阅读全文
posted @ 2018-09-13 13:46
mrclr
阅读(159)
评论(0)
推荐(0)