POJ 2342 Anniversary party (树形DP入门)
2024-09-21 10:27:16
题意:
给定一个上下属的关系树, 每个人有一个活跃值, 现在要参加一个派对, 每个人都不会和自己的上属参加派对(上属参加了,下属就不能参加了), 求参加派对的最大活跃值
分析:
枚举每个节点取与不取得最大值, 从叶子往根推。
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
const int maxn = ;
int dp[maxn][]; // dp[i][state] 表示i节点 去/不去 分别的最大值
int father[maxn]; //记录每个节点父亲
int vis[maxn];
int N;
int root = ;
void dfs(int node){
vis[node] = ;
for(int i = ; i <= N; i++){
if(vis[i] == - && father[i] == node){
dfs(i);
dp[node][] += dp[i][];//node去, 则i不能去
dp[node][] += max(dp[i][], dp[i][]);// node不去, 比较一下两者最大值
}
}
}
int main() {
while(cin >> N) {
for(int i = ; i <= N; i++) cin >> dp[i][];
for(int i = ; i <= N; i++){
int u , v;
cin >> v >> u;
if(v == && u == ) break;
root = u;
father[v] = u;
}
memset(vis, -, sizeof(vis));
dfs(root);
cout << max(dp[root][], dp[root][]) << "\n";
}
return ;
}
最新文章
- 在docker中运行ASP.NET Core Web API应用程序(附AWS Windows Server 2016 widt Container实战案例)
- 流媒体(音频 AudioStreamer)
- iOS应用架构谈(二):View层的组织和调用方案(上)
- Java设计模式-模板方法模式(Template Method)
- cookie注入的形成,原理,利用总结
- .net学习笔记----Asp.net的生命周期之一应用程序生命周期
- ViewModel命令ICommand对象定义
- C/C++ static vs global
- HDU-1018(简单数学)
- 数组、List和ArrayList的区别
- CENTOS7小注意
- 数据库DateTime类型为空的处理
- YII 1.0 验证码
- 跨域访问技术CORS(Cross-Origin Resource Sharing)简介
- mpi4python
- sublime3 配置go的开发环境
- react 首页加载loading
- Asp.net core 学习笔记 ( User Secrets )
- C#之简易计算器设计
- linux 设备驱动加载的先后顺序
热门文章
- python浅拷贝深拷贝
- 生产环境中配置的samba
- AJPFX关于Class类和Class类实例
- canvas基础绘制-一个小球的坠落、反弹
- redis安装(windows)
- 【HEVC简介】High Level Syntax
- mysql&#160;use&#160;index()&#160;优化查询
- element ui select组件和table做分页完整功能和二级联动效果
- VTK教程系列:VTK基础及应用开发教程
- mysql 中modify和change区别(以及使用modify修改字段名称报错)