HDU 1561。这道是树形DP了,所谓依赖背包,就是选A前必须选B,这样的问题。1561很明显是这样的题了。把0点当成ROOT就好,然后选子节点前必须先选根,所以初始化数组每一行为该根点的值。由于多选了0点,所以记得把m++.

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. const int MAXN=222;
  8.  
  9. int dp[MAXN][MAXN];
  10. struct Edge{
  11. int u,v,next;
  12. }edge[MAXN];
  13. int head[MAXN],n,m,tot;
  14.  
  15. void addedge(int u,int v){
  16. edge[tot].u=u;
  17. edge[tot].v=v;
  18. edge[tot].next=head[u];
  19. head[u]=tot++;
  20. }
  21.  
  22. void dfs(int u){
  23. for(int e=head[u];e!=-1;e=edge[e].next){
  24. int v=edge[e].v;
  25. dfs(v);
  26. for(int i=m;i>=1;i--){
  27. for(int k=1;k<i;k++){
  28. dp[u][i]=max(dp[u][i],dp[u][i-k]+dp[v][k]);
  29. }
  30. }
  31. }
  32. }
  33.  
  34. int main(){
  35. int u,v;
  36. while(scanf("%d%d",&n,&m),n||m){
  37. m++;
  38. memset(dp,0,sizeof(dp));
  39. memset(head,-1,sizeof(head));
  40. tot=0;
  41. for(int i=1;i<=n;i++){
  42. scanf("%d%d",&u,&v);
  43. addedge(u,i);
  44. for(int k=1;k<=m;k++)
  45. dp[i][k]=v;
  46. }
  47. dfs(0);
  48. printf("%d\n",dp[0][m]);
  49. }
  50. return 0;
  51. }

  

HDU 3449.。也是这样的题目,选物品前先买盒子。那么设dp[i][j]为前i个盒子钱为j下最优值。把每个盒子情况当成0/1背包来看。由于先买了盒子,所以初始化时是i-1情况下j-p的最优值。

  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstring>
  4. #include <algorithm>
  5. using namespace std;
  6.  
  7. int dp[52][100050];
  8.  
  9. int main(){
  10. int n,w,p,k,wi,vi;
  11. while(scanf("%d%d",&n,&w)!=EOF){
  12. memset(dp,0,sizeof(dp));
  13. for(int i=1;i<=n;i++){
  14. scanf("%d%d",&p,&k);
  15. for(int j=p;j<=w;j++){
  16. dp[i][j]=dp[i-1][j-p];
  17. }
  18. for(int kk=1;kk<=k;kk++){
  19. scanf("%d%d",&wi,&vi);
  20. for(int j=w;j>=wi+p;j--){
  21. dp[i][j]=max(dp[i][j],dp[i][j-wi]+vi);
  22. }
  23. }
  24. for(int j=0;j<=w;j++)
  25. dp[i][j]=max(dp[i][j],dp[i-1][j]);
  26. }
  27. printf("%d\n",dp[n][w]);
  28. }
  29. return 0;
  30. }

  

HDU 1561&HDU 3449 一类简单依赖背包问题的更多相关文章

  1. HDU 1561 树形DP(入门)

    题目链接:  HDU 1561 The more, The Better #include <iostream> #include <cstdio> #include < ...

  2. HDU 1561 The more, The Better(树形背包)

    The more, The Better Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

  3. HDU - 2222,HDU - 2896,HDU - 3065,ZOJ - 3430 AC自动机求文本串和模式串信息(模板题)

    最近正在学AC自动机,按照惯例需要刷一套kuangbin的AC自动机专题巩固 在网上看过很多模板,感觉kuangbin大神的模板最为简洁,于是就选择了用kuangbin大神的模板. AC自动机其实就是 ...

  4. CJOJ 2022 【一本通】简单的背包问题(搜索)

    CJOJ 2022 [一本通]简单的背包问题(搜索) Description 设有一个背包可以放入的物品重量为S,现有n件物品,重量分别是w1,w2,w3,-wn. 问能否从这n件物品中选择若干件放入 ...

  5. 【动态规划】【C/C++】简单的背包问题

    简单的背包问题 背包问题动态规划中非常经典的一个问题,本文只包含01背包,完全背包和多重背包.更加详尽的背包问题的讲解请参考崔添翼大神的<背包九讲> 简单的01背包 问题导入:新年到了,m ...

  6. HDU 1009 FatMouse' Trade(简单贪心 物品可分割的背包问题)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1009 FatMouse' Trade Time Limit: 2000/1000 MS (Java/O ...

  7. HDU 1561 The more, The Better【树形DP/有依赖的分组背包】

    ACboy很喜欢玩一种战略游戏,在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中ACboy允许攻克M个城堡并获得里面的宝物.但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城堡必须先 ...

  8. HDU 1561:The more, The Better(有依赖的树型背包)

    http://acm.hdu.edu.cn/showproblem.php?pid=1561 题意:有n个点,容量为m,每个点有一个价值,还给出n条边,代表选第i个点之前必须先选ai,问最多的价值能取 ...

  9. hdu 1561 The more, The Better 背包型树形DP 简单题

    The more, The Better Time Limit: 6000/2000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Oth ...

随机推荐

  1. Croppic插件使用介绍-asp.net

    具体的参数使用和基本使用方式请看:http://www.uedsc.com/croppic-api.html 需要说明的几点: 1.支持两种上传方式: (1)先将原图上传至服务器,然后再次将切图信息传 ...

  2. jQuery文档就绪

    很多jQuery代码都有如下片段: $(document).ready(function(){ //代码 }) 作用就是等文档结构加载完成后再去执行function中的代码,功能类似于window.o ...

  3. React Native真机调试安卓版

    React Native真机调试安卓版 一.准备工作 1.1 环境搭建 React Native中文网的文档已经非常清晰地描述了,按照步骤即可.http://reactnative.cn/docs/0 ...

  4. Andorid Scrolling Activity(CoordinatorLayout详情)

    1.new project -> Scrolling Activity 2.Layout xml code activity_scrolling.xml <?xml version=&qu ...

  5. 开发者自建IM服务器必须要解决的几个问题!

    有很多朋友的项目需要用到即时通讯,几年前鄙人的项目也是如此,当年没有选择,只能自建了IM服务器,几年下来跨了不少的坑,想想都甚是后怕.总结此文为后来还想自建IM的朋友提个醒,或许能找到更好的解决之路. ...

  6. css特殊效果

    border-radius实现特殊形状 .box{ width: 100px; height: 100px; background: orange; border: 1px solid #000; b ...

  7. JavaScript学习书签

    JavaScript常用正则表达式 闭包 JavaScipt DOM 变量提升

  8. 基于saltstack svn的一个发布系统

      1.登录页 2.分组管理页 3.添加项目页 4.项目列表和项目编辑页 5.项目发布回滚页

  9. vC web管理无法访问解决办法

    localhost:~ # service-control --status vsphere-clientINFO:root:Service: vsphere-client, Action: stat ...

  10. BZOJ 4285 使者 (CDQ分治+dfs序)

    题目传送门 题目大意:给你一棵树,有三种操作,在两个点之间连一个传送门,拆毁一个已有的传送门,询问两个点之间的合法路径数量.一条合法路径满足 1.经过且仅经过一个传送门 2.不经过起点终点简单路径上的 ...