hdu 1561 选某个物品前必须选特定的其它物品,求最大价值
来源:互联网 发布:windows 安卓扩展屏幕 编辑:程序博客网 时间:2024/05/17 06:21
#include<cstdio>#include<cstring>#define MAX(x,y) ((x)>(y)?(x):(y))struct node{int to,next;}e[220];int head[220],cnt,n,m,dp[220][220],v[220],vis[220];void add_edge(int from,int to){e[cnt].to=to;e[cnt].next=head[from];head[from]=cnt++;}void dfs(int x){//printf("x=%d \n",x);dp[x][1]=v[x];vis[x]=1; for(int i=head[x];i!=-1;i=e[i].next){int to=e[i].to;dfs(to);for(int k=m+1;k>0;k--){for(int j=1;j<k;j++)dp[x][k]=MAX(dp[x][k],dp[x][k-j]+dp[to][j]);}//for(int k=0;k<=m+1;k++) //printf("%d ",dp[x][k]);//printf("\n");}}int main(){cnt=0; while(~scanf("%d%d",&n,&m)&&(n+m)){memset(v,0,sizeof(v)); memset(head,-1,sizeof(head)); memset(dp,0,sizeof(dp)); cnt=0; for(int i=1;i<=n;i++) { int x; scanf("%d%d",&x,&v[i]); add_edge(x,i); } dfs(0); printf("%d\n",dp[0][m+1]); }}
0 0
- hdu 1561 选某个物品前必须选特定的其它物品,求最大价值
- hdu 4003 Find Metal Mineral(树形DP+分组背包,每个物品必须只能选一次)
- 01背包(求前一个的最大价值-->求前K个的最大价值) 之 hdu 2639
- hiho1486 物品价值
- hihocoder#1486 : 物品价值
- 背包系列第二篇----01背包(求解最大价值时背包的物品)
- 背包系列第五篇----完全背包(求解最大价值时背包的物品)
- 给定N中物品和一个背包。物品i的重量是Wi,其价值位Vi ,背包的容量为C。问应该如何选择装入背包的物品,使得转入背包的物品的总价值为最大?对每种物品i只有两种选择,即装入背包和不装入背包
- (hdu step 3.3.1)Big Event in HDU(01背包:N件物品放在容量为V的背包中,第i件物品的费用是c[i],价值是w[i]。问所能获取的最大价值)
- HDU 1421 搬寝室(取k对物品,每个物品可以和前一对物品也可以和后一对物品一起取)
- 反选物品(html)
- hdu1171(DP求两份物品的价值相差最小)
- hdu 1421 物品选取的dp
- hdu4968(选n个物品恰好装满的背包)
- 爱人的贵重物品
- 最喜欢的物品
- 基于物品的CF
- 货架物品的分割
- RocketMQ最佳实践(三)开发spring-boot-starter-rocketmq实现与spring boot项目的整合
- CentOS6下NAT模式访问公网
- 重构 重新组织函数
- 华为最新HiKey 960开发板可超高速运行安卓系统
- SparkR终极解决方案
- hdu 1561 选某个物品前必须选特定的其它物品,求最大价值
- Android加载echart图表
- mac上安装mongodb
- 排序算法思想总结
- 使用Jedis操作redis
- B1007. 素数对猜想 (20')
- Linux yum报错以及虚拟机网络配置
- 在freescale mx6DL 平台上添加spi资源
- 小记4 一些基础