HDU Bone Collector
来源:互联网 发布:ubuntu 安装apache 编辑:程序博客网 时间:2024/05/21 18:40
#include<stdio.h>#include<algorithm>#include<iostream>#include<string.h>using namespace std;int dp[1100],a[1000],b[1000];int main(){ int n,v,t; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&v); for(int i=0; i<n; i++) scanf("%d",&a[i]); for(int i=0;i<n;i++) scanf("%d",&b[i]); memset(dp,0,sizeof(dp)); for(int i=0; i<n; i++) { for(int j=v;j>=b[i];j--) { if(dp[j]<dp[j-b[i]]+a[i])//dp之后均更新成最优值,上次更新时某个剩余空间(〉=b[i])的价值+a[i]的价值,可能比上次dp[j]的值大。 dp[j]=dp[j-b[i]]+a[i]; } } cout<<dp[v]<<endl; } return 0;}
二维数组:
#include<stdio.h>#include<iostream>#include<string.h>#include<algorithm>using namespace std;int max(int a,int b){ return a>b?a:b;}int t,cost[1100],value[1100],dp[1100][1100];int main(){ scanf("%d",&t); while(t--) { int n,v; scanf("%d%d",&n,&v); for(int i=1;i<=n;i++) scanf("%d",&value[i]); for(int i=1;i<=n;i++) scanf("%d",&cost[i]); memset(dp,0,sizeof(dp)); for(int i=1;i<=n;i++) { for(int j=0;j<=v;j++) { if(j>=cost[i]) dp[i][j]=max(dp[i-1][j],dp[i-1][j-cost[i]]+value[i]); else dp[i][j]=dp[i-1][j]; } } cout<<dp[n][v]<<endl; } return 0;}
0 0
- HDU 2602 Bone Collector
- hdu 2602 Bone Collector
- hdu 2602 Bone Collector
- hdu 2602 Bone Collector
- HDU 2602 - Bone Collector
- HDU 2602 Bone Collector
- hdu 2602 Bone Collector
- HDU 2602 Bone Collector
- hdu 2602 Bone Collector
- hdu 2602 Bone Collector
- Hdu 2602 - Bone Collector
- hdu 2602 Bone Collector
- hdu 2602 Bone Collector
- Hdu 2602 Bone Collector
- Hdu 2602 Bone Collector
- hdu 2602 Bone Collector
- hdu - 2602 - Bone Collector
- hdu 2602 Bone Collector
- 拼装html字符串的最快方法
- ConfigurationSection类使用心得
- SQL数据库面试题以及答案
- 数学之美系列 布隆过滤器(Bloom Filter)
- 数组基本操作,问题出在哪?
- HDU Bone Collector
- MVC过滤器中获取实体类属性值
- hdu 3117 矩阵快速幂
- 计算机网络基础总结
- c++中静态成员变量如何使用
- 迁移WIKI问题解决办法
- 最近这么不太平啊,出了这么大的事。
- 单反配件Miops,为什么敢这么贵
- HDU 1180:诡异的楼梯(BFS)