题目链接

题意:给你一棵树,各个节点都有价值(除根节点),从根节点出发,选择m个节点,问最多的价值是多小。

思路:很明显是树状dp,遍历树时背包最优价值,dp[i][k]=max{dp[i][r]+dp[son[i]][k-r]}

  1. #include <iostream>
  2. #include<cstdio>
  3. #include<cstring>
  4. using namespace std;
  5. #define MAXN 250
  6. struct node{
  7. int from,to,next;
  8. }edge[MAXN];
  9. int tot,head[MAXN],visit[MAXN],value[MAXN],dp[MAXN][MAXN],f[MAXN][MAXN];
  10. int n,m;
  11. void add(int a,int b){//链式向前星
  12. edge[tot].from=a;
  13. edge[tot].to=b;
  14. edge[tot].next=head[a];
  15. head[a]=tot++;
  16. }
  17. void dfs(int root){
  18. int i,j,u,k;
  19. visit[root]=1;
  20. for(i=head[root];i!=-1;i=edge[i].next){
  21. u=edge[i].to;
  22. if(!visit[u]){
  23. dfs(u);//访问下一个节点
  24. for(k=m;k>=0;k--){//可以选择m个节点
  25. for(j=0;j<=k;j++){
  26. f[root][k]=max(f[root][k],f[root][k-j]+dp[u][j]);//背包子节点的价值
  27. }
  28. }
  29. }
  30. }
  31. for(j=1;j<=m+1;j++)
  32. dp[root][j]=f[root][j-1]+value[root];//加上自己节点的价值
  33. }
  34. int main(int argc, char** argv) {
  35. int i,a,b;
  36. while(scanf("%d%d",&n,&m)!=EOF,n+m){
  37. tot=0;
  38. memset(head,-1,sizeof(head));
  39. for(i=1;i<=n;i++){//从节点1开始,保留节点0为根节点
  40. scanf("%d%d",&a,&b);
  41. add(a,i);//单向
  42. value[i]=b;
  43. }
  44. value[0]=0;//0为根节点,价值为零
  45. memset(visit,0,sizeof(visit));
  46. memset(dp,0,sizeof(dp));
  47. memset(f,0,sizeof(f));
  48. dfs(0);//从0开始遍历树
  49. printf("%d\n",dp[0][m+1]);
  50. }
  51. return 0;
  52. }

hdu 1561 The more, The Better_树状dp的更多相关文章

  1. hdu 5869 区间不同GCD个数(树状数组)

    Different GCD Subarray Query Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  2. hdu 6203 ping ping ping(LCA+树状数组)

    hdu 6203 ping ping ping(LCA+树状数组) 题意:给一棵树,有m条路径,问至少删除多少个点使得这些路径都不连通 \(1 <= n <= 1e4\) \(1 < ...

  3. HDU 4714 Tree2cycle(树状DP)(2013 ACM/ICPC Asia Regional Online ―― Warmup)

    Description A tree with N nodes and N-1 edges is given. To connect or disconnect one edge, we need 1 ...

  4. 树状DP HDU1520 Anniversary party

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1520 题意:职员之间有上下级关系,每个职员有自己的happy值,越高在派对上就越能炒热气氛.但是必须是 ...

  5. 树状DP (poj 2342)

    题目:Anniversary party 题意:给出N各节点的快乐指数,以及父子关系,求最大快乐指数和(没人职员愿意跟直接上司一起玩): 思路:从底向上的树状DP: 第一种情况:第i个员工不参与,F[ ...

  6. poj3659树状DP

    Cell Phone Network Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6273   Accepted: 225 ...

  7. poj 2342 Anniversary party_经典树状dp

    题意:Ural大学有n个职员,1~N编号,他们有从属关系,就是说他们关系就像一棵树,父节点就是子节点的直接上司,每个职员有一个快乐指数,现在要开会,职员和职员的直接上司不能同时开会,问怎才能使开会的快 ...

  8. [Codeforces743D][luogu CF743D]Chloe and pleasant prizes[树状DP入门][毒瘤数据]

    这个题的数据真的很毒瘤,身为一个交了8遍的蒟蒻的呐喊(嘤嘤嘤) 个人认为作为一个树状DP的入门题十分合适,同时建议做完这个题之后再去做一下这个题 选课 同时在这里挂一个选取节点型树形DP的状态转移方程 ...

  9. poj2486--Apple Tree(树状dp)

    Apple Tree Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 7789   Accepted: 2606 Descri ...

随机推荐

  1. Linux一个简单的读写文件

    (1)linux中的文件描述符fd的合法范围是或者一个正正数,不可能是一个负数. (2)open返回的fd程序必须记录好,以后向这个文件的所有操作都要靠这个fd去对应这个文件,最后关闭文件时也需要fd ...

  2. c语言typedef之数组运用

    #include <stdio.h> #include <stdlib.h> typedef ];//int arr[4]取一个别名 arr b c就是int b[4] int ...

  3. StretchDIBits使用方法

    转自:http://blog.csdn.net/giantchen547792075/article/details/6996011 StretchDIBits 函数把DIB.JPEG.PNG图像中一 ...

  4. DotNet加密方式解析--散列加密

    没时间扯淡类,赶紧上车吧. 在现代社会中,信息安全对于每一个人都是至关重要的,例如我们的银行账户安全.支付宝和微信账户安全.以及邮箱等等,说到信息安全,那就必须得提到加密技术,至于加密的一些相关概念, ...

  5. samba服务器详细配置(非域模式)

    组成Samba运行的有两个服务,一个是SMB,另一个是NMB:SMB是Samba 的核心启动服务,主要负责建立Samba服务器与Samba客户机之间的对话,验证用户身份并提供对文件和打印系统的访问,只 ...

  6. 关闭程序 提示 C#

    private void Form1_FormClosing(object sender, FormClosingEventArgs e) { DialogResult dr = MessageBox ...

  7. 分享一个在线制作GIF格式loading图片的好网址

    等待您寻找惊喜:http://preloaders.net/

  8. Wireshark 使用教程

    原文出处   http://blog.sina.com.cn/s/blog_5d527ff00100dwph.html Wireshark是世界上最流行的网络分析工具.这个强大的工具可以捕捉网络中的数 ...

  9. iOS 8以上的设置的跳转

    iOS8以上的系统应用可以与设置进行深层的交互,用户可以根据APP的需要进行对应的权限的设置. 现在大多数的APP依旧仅仅是弹出一个包含操作指令的警示窗口,如“进入设置>隐私>位置> ...

  10. UVA 10790 How Many Points of Intersection?

      How Many Points of Intersection?  We have two rows. There are a dots on the top row and b dots on ...