牛客算法进阶——树形dp
1. 小G有一个大树(求树的重心)
删除该点后最大连通块的节点数最小
设f[x]表示以x为根的子树大小,那么删除x之后的各子树大小为f[to]和n-f[x]
求max(max(f[to]),n-f[x])的最小值以及最小值所对的x
2.没有上司的舞会
儿子和父亲不能同时选择
设dp[x][0/1]表示x节点不选/选,他的子树快乐最大值是多少
dp[x][0] += max(dp[x][0],dp[x][1]);
dp[x][1] += dp[x][0];
最后答案为max(dp[x][0],dp[x][1]);
3.Cell Phone Network
一个点可以关联它与它相邻的点
设dp[x][0/1/2]表示被他的儿子/父亲/自己关联
dp[x][0] += min(dp[to][0],dp[to][2]) 特殊情况是儿子都是被儿子的儿子关联,没有儿子能关联他,这时要加上min(dp[to][2]-dp[to][0]) > 0
dp[x][1] += min(dp[to][0],min(dp[to][1],dp[to][2]))
dp[x][2] += min(do[to][0],dp[to][2]);
最后答案为min(dp[to][0],dp[to][2]);
4.二叉苹果树
选儿子必须选父亲->看成树上依赖背包
dp[x][j]表示i为根的子树内连续选j条边的最大苹果树
dp[x][j] = max(dp[x][j],dp[x][j-k-1]+dp[to][k]+w) 注意j要倒序处理,防止重复选择一颗子树
答案为dp[1][m]
5.树上子链
带权树上直径
经过x的最长链为最长链+次长链
6.Rinne Loves Edges
弱化版的吉吉国王
7.吉吉国王
最长长度最小(二分)
dp[x]表示把x子树内的叶子切断的最小代价
当w>规划的最长长度 dp[x] += dp[to];
当w<规划的最长长度 dp[x] += min(dp[to],w);
牛客算法进阶——树形dp的更多相关文章
- 牛客 203B tree(树形dp)
大意: 给定树, 对于每个节点, 求包含该节点的连通子集数. 显然有$dp[x]=\prod (dp[y]+1), ans[x]=(\frac{ans[fa[x]]}{dp[x]+1}+1)dp[x] ...
- [牛客] [#1108 J] [树形结构] 买一送一
2019牛客国庆集训派对day3 链接:https://ac.nowcoder.com/acm/contest/1108/J来源:牛客网 题意 ICPCCamp 有 n 个商店,用 $1,2,..., ...
- 牛客比赛-状压dp
链接:https://www.nowcoder.com/acm/contest/74/F来源:牛客网 德玛西亚是一个实力雄厚.奉公守法的国家,有着功勋卓著的光荣军史. 这里非常重视正义.荣耀.职责的意 ...
- 算法复习——树形dp
树形dp的状态转移分为两种,一种为从子节点到父节点,一种为父节点到子节点,下面主要讨论子节点到父亲节点的情况: 例题1(战略游戏): 这是一道典型的由子节点状态转移到父节点的问题,而且兄弟节点之间没有 ...
- 牛客算法:DNA序列
import java.util.*; public class Main{ public static void main(String[] args){ try(Scanner in = new ...
- 牛客算法周周练20 F.紫魔法师 (二分图染色)
题意:给你一张图,对其染色,使得相连的点的颜色两两不同求,最少使用多少种颜色. 题解:首先,若\(n=1\),只需要一种.然后我们再去判断是否是二分图,对于二分图,两种颜色就够了,若不是二分图,也就是 ...
- LuoguP3047 [USACO12FEB]附近的牛Nearby Cows(树形DP,容斥)
\[f[u][step] = \begin{cases} C[u] & step = 0 \\ (\sum{f[v][step - 1]}) - f[u][step - 2] \cdot (d ...
- 牛客寒假算法基础集训营2 【处女座与复读机】DP最小编辑距离【模板题】
链接:https://ac.nowcoder.com/acm/contest/327/G来源:牛客网 一天,处女座在牛客算法群里发了一句“我好强啊”,引起无数的复读,可是处女座发现复读之后变成了“处女 ...
- 树形dp 入门
今天学了树形dp,发现树形dp就是入门难一些,于是好心的我便立志要发一篇树形dp入门的博客了. 树形dp的概念什么的,相信大家都已经明白,这里就不再多说.直接上例题. 一.常规树形DP P1352 没 ...
- 树形DP总结,持续更新
自己做了动态规划的题目已经有了一个月,但是成效甚微,所以来总结一下动态规划,希望自己能够温故知新.这个博客是关于树形dp的,动态规划的一类题目. 首先从最简单的树形DP入手,树形DP顾名思义就是一棵树 ...
随机推荐
- Cesium鼠标移动到模型上,给模型添加高亮轮廓(四)
2023-01-09 Cesium虽然也支持两种方式(Entity和Primitive)加载3D Tiles数据, 但因为多数情况下3D Tiles数据都是成片区的数据,数据量比较大,所以为了保证性能 ...
- P5491 【模板】二次剩余
\(\text{Summary}\) 实际上是做法的归纳 一切皆是结论性的,没有证明! 模 \(p\) 意义下的二次剩余有 \(\frac{p-1}2\) 个,二次非剩余也恰有那么多 考虑解关于 \( ...
- JZOJ 2022.01.21【提高A组】模拟
简要题解加心得 不得不说这是我打得比较痛苦且改得比较痛苦的一套题了 \(\text{T1 1085. [GDOI2008]彩球游戏}\) 整整改了三个半小时 直接崩溃了 明明本地可以跑过去,偏偏 \( ...
- NOIP 模拟赛 左右横跳
\(\text{Problem}\) 大意就是优化这样一个 \(dp\) \[f_{i}=\max f[j]+(i-j) \cdot (i-j-1) \] \(L[i] \le j < i,n\ ...
- 李超树学习笔记 & JZOJ 5039. 【NOI2017模拟4.2】查询题解
李超树 它本质上是线段树的拓展运用 解决的问题:平面直角坐标系中,支持插入线段,问 \(x = x_0\) 这条直线上最大的 \(y\) 值 它维护的东西很奇特:优势线段 何为"优势线段&q ...
- MySQL 查询常用操作(0) —— 查询语句的执行顺序
MySQL中明确查询语句的执行顺序极其重要,了解执行顺序才不至于犯一些简单错误,例如having 后面是否可以使用 select 中重命名的列名等问题.另外SQL中实际使用最频繁的就是查询(Quein ...
- Oracle中的sql脚本语言中的循环语句介绍
--sql脚本语言的循环介绍:--1.goto循环点.declare x number;begin x:=0;--变量初始化: <<repeat_loop>>--设置循环 ...
- 使用vue 搭建猫眼后台演员列表
首先创建一个DirectorList.vue js部分
- GoLang中signal.Notify函数用法
官方描述: Notify函数让signal包将输入信号转发到c.如果没有列出要传递的信号,会将所有输入信号传递到c:否则只传递列出的输入信号. signal包不会为了向c发送信息而阻塞(就是说如果发送 ...
- 下拉刷新,上拉触底(.js里自带)
<view>content值是{{cont}}</view> <button bindtap="add">+1</button> ...