考虑树形$DP$,设$num_x$记录的为当$1$为根时,以$x$为子树中重要城市的个数。 那么进行分类讨论: ① 当$num_x≠0$时,则需将其所有满足$num_y≠0$的儿子$y$删去。 ② 当$num_x=0$时,若满足$num_y≠0$的儿子$y$个数$cnt=1$,则直接让$num$进行 ...
分类:
其他好文 时间:
2020-01-22 23:43:05
阅读次数:
83
可以通过两次$dfs$或$bfs$求出树的直径,从任意结点出发,搜索得出直径的一个端点,然后从这个端点继续搜索,得出另一个端点,但无法处理负边权 $code$: 也可以用树形$DP$求直径,考虑每个结点$x$,求出经过结点$x$的最长链长度,则树的直径长度就是这些最长链长度的最大值,但无法求出直径的 ...
分类:
其他好文 时间:
2020-01-22 21:47:43
阅读次数:
75
"题面" 对于这道题,我们考虑在树形dp上套背包。我们会非常自然的采用dfs扫描整棵树,然后对树上的每个节点都进行一次背包。 计$dp[i][j]$为在以第$i$号节点为根结点的子树中,用题目中选法选取$j$项的最大值。 我们在dfs的过程中,采用递归的方式,在子节点都处理完之后,便考虑将所有子节点 ...
分类:
其他好文 时间:
2020-01-22 21:31:20
阅读次数:
61
链接:Miku 很入门的树形dp,首先,在这个题中,我们要做的就是求出来每一个子节点,然后用他们去更新父亲节点。 对于每一个节点,他有两种状态,去,或者不去,我们定义dp[i][0]为第i个节点也去的状态,而dp[i][1]为它不去,那么很显然 如果这个点去了,它的子节点肯定不去,那么dp[i][1 ...
分类:
其他好文 时间:
2020-01-20 22:55:24
阅读次数:
62
期末考前写题解,$rp++$ $$ description $$ 给出一棵点带权树,你需要选取若干个点: $ :$ 选取的点 两两不具有父子关系 。 $ :$ 在满足 $$ 的情况下 最大化点权和 。 求最大的点权和。 $$ solution $$ 树形 dp 经典。 令 表示在不选 $u$ 的情况 ...
分类:
其他好文 时间:
2020-01-20 09:35:52
阅读次数:
77
# 算法 || 树形dp入门题 # *leetcode 337 状态转移方程很好想,使用一个大小为2的数组来表示状态 int[] cur = new int[2] 0代表不偷,1代表偷 root[0] = Math.max(rob(root.left)[0], rob(root.left)[1]) ...
分类:
其他好文 时间:
2020-01-17 09:38:05
阅读次数:
63
瞎打了几个暴力上去竟然就能rk2.。。 考完发现是数据结构专项测试。 T1 由于所有的圆不相交,那么我们可以认为这些圆的上下位置是不变的。 很显然的一个树形$dp$,复杂度瓶颈在于建树。 每个圆拆成上下两个,做一次平衡树扫描线。 排序的时候以$y$为第一关键字,上下半圆为第二关键字,编号是第三关键字 ...
分类:
其他好文 时间:
2020-01-12 13:29:53
阅读次数:
76
题目 给定一个非空二叉树,返回其最大路径和。 本题中,路径被定义为一条从树中任意节点出发,达到任意节点的序列。该路径至少包含一个节点,且不一定经过根节点。 题解 题意理解:注意该路径至少包含一个节点,所以若节点都是负值,则最大值也是负值而不是取0; 首先考虑是是不是树形DP?或许算是,但要特别注意下 ...
分类:
其他好文 时间:
2020-01-11 23:48:49
阅读次数:
87
题:https://codeforces.com/contest/1099/problem/F 题意:给定一个树,每个节点有俩个信息x和t,分别表示这个节点上的饼干个数和先手吃掉这个节点上一个饼干的的时间。然后有先手和后手俩个人。 ?先手可以这么操作:在规定总时间T到达某个节点然后一定要返回根节点1 ...
分类:
其他好文 时间:
2019-12-08 01:19:43
阅读次数:
86
前言: 虽然很多人和我想法一样 ~~,但我还是不要脸地写了这题解~~ 题目: "链接" 大意: 在一棵树上取一条最长链以及它所连接的结点总共的结点个数 思路: 取链: 用树形$DP$就可以轻而易举的解决这个问题: $f_x$表示以$x$为根节点的树的深度 转移方程: $$f_x=max\{f_y + ...
分类:
其他好文 时间:
2019-12-07 14:27:45
阅读次数:
80