hdu 1561 The more, The Better 树形DP入门题
来源:互联网 发布:linux 文件删除 编辑:程序博客网 时间:2024/05/03 02:23
题意:中文题,简单明了。
解题思路:首先将所有的可以直接攻克的城堡并在节点0的下面,然后对于每个节点,利用分组背包的思想,该节点的各个子树看成各个背包。
#include <stdio.h>#include <string.h>struct EDGE {int to, next;}edge[222];int head[222], E, cnt[222], dp[222][222], val[222];void newedge(int u, int to) {edge[E].to = to;edge[E].next = head[u];head[u] = E++;}void init() {memset(head, -1, sizeof(head));memset(dp, 0 , sizeof(dp));E = 0;}void dfs(int u) {cnt[u] = 1; if(head[u] == -1){dp[u][1] = val[u];return ;}int i, j, k;for(i = head[u];i != -1; i = edge[i].next) {int to = edge[i].to;dfs(to);cnt[u] += cnt[to];for(j = cnt[u]-1;j >= 0; j-- ) {for(k = 1;k <= cnt[to]; k++) if(j+k < cnt[u] && dp[u][j]+dp[to][k] > dp[u][j+k])dp[u][j+k] = dp[u][j] + dp[to][k];}}if(u != 0) {for(i = cnt[u];i >= 1; i--)dp[u][i] = dp[u][i-1]+val[u];dp[u][0] = 0;}}int main() {int i, j, k, n, m, a;while(scanf("%d%d", &n, &m) != -1 && n) {init();for(i = 1;i <= n; i++) {scanf("%d%d", &a, &val[i]);newedge(a, i);}val[0] = 0;dfs(0);printf("%d\n", dp[0][m]);}return 0;}
- hdu 1561 The more, The Better 树形DP入门题
- hdu 1561 The more, The Better(树形DP入门)
- hdu 1561 The more, The Better(树形DP入门)
- HDU 1561 The more, The Better(树形DP入门)
- hdu 1561 The more, The Better (树形DP)
- hdu 1561 The more, The Better 树形DP+背包
- hdu 1561 The more, The Better(树形dp)
- hdu 1561 (树形dp)The more, The Better
- HDU 1561 The more, The Better(树形DP)
- HDOJ (HDU) 1561 The more, The Better (树形DP)
- 【树形DP】 HDU 1561 The more, The Better
- hdu 1561 The more, The Better (树形背包dp)
- HDU 1561 The more, The Better 依赖背包+树形DP
- hdu 1561 The more, The Better (树形DP)
- hdu 1561 The more, The Better(经典树形DP)
- hdu 1561 The more, The Better (树形dp)
- hdu 1561 The more, The Better (树形dp)
- HDU 1561 The more, The Better / 树形DP
- 【笔者支招:全方面更改各类特征码】
- Linux Bash Shell快速入门
- 自旋锁的应用
- XML文件解析
- 黑马程序员——StringBuffer
- hdu 1561 The more, The Better 树形DP入门题
- 一年成为Emacs高手(像神一样使用编辑器)
- 技术篇——android 禁止横屏竖屏切换
- 基于TSP软件实训平台的设计与开发
- C++ Boost库简介
- java android 获取手机操作系统相关信息
- 滑动门效果
- 多个Activity共用相同布局或者相同控件
- android学习之——Handler、Looper、MessageQueue