poj2602 bone 0-1背包
来源:互联网 发布:快速排序算法java递归 编辑:程序博客网 时间:2024/05/16 13:55
Bone Collector
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 14336 Accepted Submission(s): 5688
Problem Description
Many years ago , in Teddy’s hometown there was a man who was called “Bone Collector”. This man like to collect varies of bones , such as dog’s , cow’s , also he went to the grave …
The bone collector had a big bag with a volume of V ,and along his trip of collecting there are a lot of bones , obviously , different bone has different value and different volume, now given the each bone’s value along his trip , can you calculate out the maximum of the total value the bone collector can get ?
The bone collector had a big bag with a volume of V ,and along his trip of collecting there are a lot of bones , obviously , different bone has different value and different volume, now given the each bone’s value along his trip , can you calculate out the maximum of the total value the bone collector can get ?
Input
The first line contain a integer T , the number of cases.
Followed by T cases , each case three lines , the first line contain two integer N , V, (N <= 1000 , V <= 1000 )representing the number of bones and the volume of his bag. And the second line contain N integers representing the value of each bone. The third line contain N integers representing the volume of each bone.
Followed by T cases , each case three lines , the first line contain two integer N , V, (N <= 1000 , V <= 1000 )representing the number of bones and the volume of his bag. And the second line contain N integers representing the value of each bone. The third line contain N integers representing the volume of each bone.
Output
One integer per line representing the maximum of the total value (this number will be less than 231).
Sample Input
1
5 10
1 2 3 4 5
5 4 3 2 1
Sample Output
14
ACcode:
#include <iostream>#include<cstdio>#include<string.h>using namespace std;int value[1001],volume[1001],dp[1001];int Max(int x,int y){ return (x>y)?x:y;}int main(){ int t,n,V; scanf("%d",&t); while(t--) { scanf("%d%d",&n,&V); for(int i=0;i<n;i++) scanf("%d",&value[i]); for(int i=0;i<n;i++) scanf("%d",&volume[i]); memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++) for(int v=V;v>=volume[i];v--) dp[v]=Max(dp[v],dp[v-volume[i]]+value[i]);//0-1背包,要么不装,要么装 printf("%d",dp[V]); } return 0;}<span style="BACKGROUND-COLOR: #ffffff">总结:</span>
<span style="BACKGROUND-COLOR: #ffffff">0-1背包伪代码:</span>
<p>for i=1..N</p><p> for v=V..0</p><p> dp[v]=max{dp[v],dp[v-c[i]]+w[i]};</p>
0 0
- poj2602 bone 0-1背包
- Bone Collector 2602 0-1背包问题
- HDOJ Bone Collector (0/1背包)
- HDOJ2602--0-1背包Bone Collector
- HDOJ2602 Bone Collector(0/1背包)
- HDU 2602 Bone Collector (0-1背包)
- hdu 2602 Bone Collector(0/1背包)
- 【0-1背包】HDU-2602 Bone Collection
- hdu 2602 Bone Collector (0-1背包)
- HDOJ 2602 Bone Collector 【0 1背包】
- Bone Collector(0-1背包模板)
- hdu 2602 Bone Collector(0-1背包)
- hdu 2602 Bone Collector 0-1背包;
- [2602]Bone Collector(0-1背包问题)
- HDOJ 2602 Bone Collector(0-1背包)
- Bone Collector(基础 0-1背包)
- HDU 2602 Bone Collector(0 1背包)
- poj2602
- 一看就会Android之布局高度和布局宽度与组件高度和宽度的区别
- Linux学习 - vsftpd的配置和常用命令
- swift闭包的理解
- C语言localtime()函数:获取当前时间和日期并转换为本地时间
- 一看就会Android之开发自定义的View
- poj2602 bone 0-1背包
- 等概率随机排列数组(洗牌算法)
- Java-HttpServletRequest
- Android:Android中的Surface和SurfaceView
- 基于Netty的服务端长连接
- OC01 类和对象
- Bellman-Ford算法详讲
- 最大公约数和最小公倍数问题
- 最有用的Linux命令行使用技巧集锦