AcWing 树形DP相关问题
皓首不倦
算法爱好者 码农一枚 欢迎志同道合 技术爱好者加微信CODER-GRH 非技术人员勿扰
展开
-
AcWing 树形DP相关问题 1077. 皇宫看守
import sys sys.stdin = open('data.txt', 'r') from functools import lru_cache N = int(input()) link = {} weight = {} parent = {} for _ in range(N): arr = list( map(int, input().split()) ) link[arr[0]] = arr[3:] weight[arr[0]] = arr[1] ..原创 2020-08-03 13:54:25 · 160 阅读 · 0 评论 -
AcWing 树形DP相关问题 1075. 数字转换
import sys sys.stdin = open('data.txt', 'r') ''' 树形DP, 树的最长路径的应用, 求一个森林里面所有树的最长路径的最大值 ''' N = int(input()) # 先求所有值的约数 factor = {} for i in range(1, N+1): for j in range(2, N // i + 1): # 约数不能是自己,所以从2开始枚举,如果约数可以是自己,从1开始枚举 if i*j not in fact.原创 2020-08-03 13:52:51 · 238 阅读 · 0 评论 -
AcWing 树形DP相关问题 1074. 二叉苹果树
import sys sys.stdin = open('data.txt', 'r') N, Q = map(int, input().split()) link = {} for i in range(1, N): a, b, w = map(int, input().split()) if a not in link: link[a] = [] if b not in link: link[b] = [] link[a].a..原创 2020-08-03 13:51:25 · 181 阅读 · 0 评论 -
AcWing 树形DP相关问题 1073. 树的中心
N = int(input()) link = {} for i in range(1, N): a, b, w = map(int, input().split()) if a not in link: link[a] = [] if b not in link: link[b] = [] link[a].append((b, w)) link[b].append((a, w)) # 随便选一个节点作为树的根,递归算每个节点到.原创 2020-08-03 13:50:09 · 215 阅读 · 0 评论 -
AcWing 树形DP相关问题 1072. 树的最长路径
N = int(input()) link = {} for i in range(1, N): a, b, w = map(int, input().split()) if a not in link: link[a] = [] if b not in link: link[b] = [] link[a].append((b, w)) link[b].append((a, w)) # 随便选一个节点作为树的根,递归算每个节点到.原创 2020-08-03 13:49:16 · 176 阅读 · 0 评论 -
AcWing 树形DP相关问题 323. 战略游戏
import sys sys.stdin = open('data.txt', 'r') ''' 题目意思本质就是一条边上至少要选一个节点 dp(i, j) 表示在以i为根的子树上做放置士兵的选择,在根节点i选择状态是j的情况下所有可能的选择中最少的士兵数量 (j 只有0, 1两种选择) ''' def dp(i, j, memo): if (i, j) in memo: return memo[(i, j)] if len(link[i]) == 0: .原创 2020-08-03 13:48:19 · 134 阅读 · 0 评论