POJ 3624 Charm Bracelet(01背包)
来源:互联网 发布:淘宝虚假交易处罚新规 编辑:程序博客网 时间:2024/04/28 04:24
POJ 3624 Charm Bracelet(01背包)
http://poj.org/problem?id=3624
题意:给你N个物品,每个具有Wi重量和Di价值,问你在不超过M的总重量前提下,能获得的最大价值是多少?
分析:明显的01背包问题。
令d[i][j]=x表选择完前i个物品后,总重量不超过j的前提下能获得的最大价值为x。
则d[i][j] = max( d[i-1][j] , d[i-1][j-wi]+Di ) i>=1 且j>=wi
初值: d[0][X]=0 ,X为任意正整数.
本题如果用二维数组很有可能空间不够,所以用一维滚动数组才行.不过先用二维数组写一个可行的程序,然后改成2维的滚动数组.
AC代码:516ms
//二维数组做法#include <iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int W[3403],D[3403],d[2][12881];int main(){ int n,m; while(scanf("%d%d",&n,&m)==2) { for(int i=1;i<=n;i++) scanf("%d%d",&W[i],&D[i]); memset(d,0,sizeof(d)); int cur=0; for(int i=1;i<=n;i++) { cur =1-cur; for(int j=0;j<=m;j++) { d[cur][j]=d[1-cur][j]; if(j>=W[i]) d[cur][j]=max(d[cur][j],d[1-cur][j-W[i]]+D[i]); } } printf("%d\n",d[cur][m]); } return 0;}
一维数组做法:
AC代码:344ms
//一维数组做法#include <iostream>#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>using namespace std;int W[3403],D[3403],d[12881];int main(){ int n,m; while(scanf("%d%d",&n,&m)==2) { for(int i=1;i<=n;i++) scanf("%d%d",&W[i],&D[i]); memset(d,0,sizeof(d)); for(int i=1;i<=n;i++) { for(int j=m;j>=0;j--) { if(j>=W[i]) d[j]=max(d[j],d[j-W[i]]+D[i]); } } printf("%d\n",d[m]); } return 0;}
0 0
- poj 3624 Charm Bracelet 01背包
- poj 3624 : Charm Bracelet (01背包)
- poj 3624 Charm Bracelet DP 01背包
- poj 3624Charm Bracelet(简单01背包)
- POJ 3624 Charm Bracelet 【DP】【01背包】
- POJ 3624 Charm Bracelet (01背包)
- Poj 3624 Charm Bracelet (01背包)
- poj 3624 Charm Bracelet 01背包
- poj 3624 Charm Bracelet 基础01背包
- poj 3624 Charm Bracelet 01背包问题
- [01背包]POJ 3624Charm Bracelet
- POJ 3624 Charm Bracelet(01背包)
- poj 3624 Charm Bracelet(01背包)
- POJ 3624 Charm Bracelet 01背包
- POJ 3624 Charm Bracelet 01背包问题
- POJ 3624 Charm Bracelet【01背包】
- poj 3624 Charm Bracelet(01背包)
- poj 3624 Charm Bracelet (01背包)
- margin负值
- RBAC权限管理
- java入门一DAY05------从数据结构开始5
- 重庆兴旺打火机加盟是骗子,现在东窗事发了!
- RFT测试脚本
- POJ 3624 Charm Bracelet(01背包)
- 收集下IBATIS动态的条件元素
- 利用接口来实现多态
- sublime配置全攻略
- 利用抽象类来实现USB的插入设备
- Android集成开发环境的搭建
- linux内容复制,避免复制源文件的空洞
- RFT API初涉——之解决RFT无法识别windows对话框的问题
- 京成一品教你辨识骗子创业加盟店(转载)