LCA与树上DP
2024-10-19 17:44:13
LCA
倍增
f[i][j]代表i的2^j级父亲
f[i][j]=f[f[i][j-1]][j-1]
有了f数组,如何计算“u向上跳k步到达哪个点”?
对k作二进制分解,枚举所有二进制位。
如果第i位为1,那么令u=f[u][i]
O(nlogn) 预处理
for(int i=1;i<=n;i++)
f[i][0]=fa[i];
for(int j=1;j<=20;j++)
for(int i=1;i<=n;i++)
f[i][j]=f[f[i][j-1]][j-1];
树上DP
维护树上信息的dp
F[i]代表以i为根的连通块的最大点权和
F[i]+=max(f[j],0)(j是i的儿子)
void dfs(int fa,int x){//DP
f[x]=v[x];
for(int i=head[x];i;i=nxt[i]){
if(to[i]==fa)
continue;
dfs(x,to[i]);
f[x]+=max(f[to[i]],0);
}
ans=max(ans,f[x]);
}
最新文章
- Yii rbac原理和实践
- robot framework 安装配置
- XAMPP(Linux版-x86兼容)官网下载
- 中文分词系列(二) 基于双数组Tire树的AC自动机
- Epoll之ET、LT模式
- YZOI回忆录&;&;YZOI3.0介绍&;&;某些资源的分享
- 使用JFinal框架中Validator
- 闲来无事,把node又拾起来看看
- linux子系统ubuntu16.04安装使用xrdp当远程桌面
- Xcode 8.X Command Line Tools
- [administrative][archlinux][netctl][wpa_supplicant] 查看WIFI链接信息
- RocketMQ 事务消息
- C++ 表示一个区间值得方法
- Android 为库(library)创建不同编译环境
- nodejs学习笔记二(get请求、post请求、 querystring模块,url模块)
- 《Java程序设计》实验三(敏捷开发与XP实践)20155214 实验报告
- 【BZOJ】1088: [SCOI2005]扫雷Mine(递推)
- leetcode-对称二叉树
- thinkjphp 模板中获取url中的action
- grads 新老版本目录对比