博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu 1011 Starship Troopers(树形DP+背包问题)
阅读量:4035 次
发布时间:2019-05-24

本文共 814 字,大约阅读时间需要 2 分钟。

1、

2、题目大意;

有n个洞穴,每个洞穴中有相应的价值和bugs,现在有m个士兵,每个士兵可以消灭20个bugs,求这m个士兵最多可以获得多少价值

dp[i][j]表示以i为根用掉j个士兵获得的最大价值

 dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k]);

3、AC代码:

#include
#include
using namespace std;#include
#include
#define N 105vector
adj[N*2];int dp[N][N];int w[N],val[N],vis[N],m;void dfs(int u){ vis[u]=1; for(int i=w[u];i<=m;i++) dp[u][i]=val[u]; for(int i=0;i
=w[u];j--) { for(int k=1;k<=j-w[u];k++)//k从1开始,从0wrong { dp[u][j]=max(dp[u][j],dp[u][j-k]+dp[v][k]); } } } }}int main(){ int n,a,b; while(scanf("%d%d",&n,&m)!=EOF) { if(n==-1 && m==-1) break; for(int i=0;i<=n;i++) { adj[i].clear(); } memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) { scanf("%d%d",&w[i],&val[i]); w[i]=(w[i]+19)/20; //dp[i][w[i]]=val[i]; } for(int i=1;i

 

转载地址:http://lrddi.baihongyu.com/

你可能感兴趣的文章
CFormView简介
查看>>
Visual Studio 2010 与 VC++ 6.0 的操作差异(一)之对话框中添加OnInitDialog()函数
查看>>
VC的MFC里面控件的ID使用ID_XXXXX和IDR_XXXXX的区别
查看>>
VC++ 获取ListControl选中行
查看>>
用VC++实现应用程序窗口的任意分割(2)
查看>>
“class”类型重定义,include(头文件)重复加载 QT /c++
查看>>
MFC框架类、文档类、视图类相互访问的方法
查看>>
<转>文档视图指针互获
查看>>
C++中头文件相互包含的几点问题
查看>>
内存设备描述表
查看>>
Latex插入eps图片的方法
查看>>
Matlab subplot 图像间距调整
查看>>
Hibernate使用count(*)取得表中记录总数
查看>>
distinct使SQL查询除去重复的字段
查看>>
从mysql中 导出/导入表及数据
查看>>
HQL语句大全(转)
查看>>
几个常用的Javascript字符串处理函数 spilt(),join(),substring()和indexof()
查看>>
javascript传参字符串 与引号的嵌套调用
查看>>
进程的状态
查看>>
Runnable和Thread 两种实现方式的区别和联系:
查看>>