POJ 3624 Charm Bracelet 0-1背包
传送门:http://poj.org/problem?id=3624
题目大意:XXX去珠宝店,她需要N件首饰,能带的首饰总重量不超过M,要求不超过M的情况下,使首饰的魔力值(D)最大。
0-1背包入门题。
可构建状态转移方程:
dp [ i ] [ v ]= max ( dp[ i-1 ] [ v ], dp[ i-1 ][ v- W[ i ] ]+d[ i ] ] )
但是这样空间太大,可以用滚动数组解决。
for(int i=1;i<=N;i++)
{
for(int j=M;j>=w[i];j--)
{
f[j]=max ( f[j] , f[j-w[i]]+d[i]);
}
}
为什么这样做是正确的呢?f数组是从上到下,右到左计算的,计算f ( i, j)之前, f( j )保存的就是 f(i-1 ,j)的值,f ( j-w )就是 f(i-1 ,j-w)的值,所以f[j]=max ( f[j] , f[j-w[i]]+d[i]); 就把
f(i-1 ,j-w[i]) +d[i] 和 f(i-1 ,j)中大的保存起来。
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=12880+10;
int f[MAXN],w[MAXN],d[MAXN];
int main()
{
int N,M;
while(~scanf("%d%d",&N,&M))
{
for(int i=1;i<=N;i++)
scanf("%d%d",&w[i],&d[i]); memset(f,0,sizeof(f)); for(int i=1;i<=N;i++)
{
for(int j=M;j>=w[i];j--)
{
f[j]=max ( f[j] , f[j-w[i]]+d[i]);
}
} printf("%d\n",f[M]);
}
}
当然也可以边输入边处理:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int MAXN=12880+10;
int f[MAXN],w,d;
int main()
{
int N,M;
while(~scanf("%d%d",&N,&M))
{
memset(f,0,sizeof(f));
for(int i=1;i<=N;i++)
{
scanf("%d%d",&w,&d);
for(int j=M;j>=w;j--)
{
f[j]=max ( f[j] , f[j-w]+d );
}
}
printf("%d\n",f[M]);
}
}
POJ 3624 Charm Bracelet 0-1背包的更多相关文章
- POJ.3624 Charm Bracelet(DP 01背包)
POJ.3624 Charm Bracelet(DP 01背包) 题意分析 裸01背包 代码总览 #include <iostream> #include <cstdio> # ...
- POJ 3624 Charm Bracelet (01背包)
题目链接:http://poj.org/problem?id=3624 Bessie has gone to the mall's jewelry store and spies a charm br ...
- POJ 3624 Charm Bracelet(01背包模板)
Charm Bracelet Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 45191 Accepted: 19318 ...
- poj 3624 Charm Bracelet(01背包)
Charm Bracelet Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 29295 Accepted: 13143 ...
- POJ 3624 Charm Bracelet(0-1背包模板)
http://poj.org/problem?id=3624 题意:给出物品的重量和价值,在重量一定的情况下价值尽可能的大. 思路:经典0-1背包.直接套用模板. #include<iostre ...
- POJ 3624 Charm Bracelet【01背包】
解题思路:直接套公式就能做的01背包, for(i=1;i<=n;i++) { for(v=w[i];v<=m;v++) f[i,v]=max(f[i,v],f[i-1,v-w[i]]+d ...
- POJ 3624 Charm Bracelet 简单01背包
题目大意:有n件珠宝,每个珠宝的魅力值为v,重量为w,求在重量不超过m的情况下能达到的最大魅力值. 题目思路:简单的01背包,由于二维数组会超内存所以应该压缩成一维数组. dp[i][j],表示选取i ...
- poj 3624 Charm Bracelet 背包DP
Charm Bracelet Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://poj.org/problem?id=3624 Descripti ...
- POJ 3624 Charm Bracelet(01背包裸题)
Charm Bracelet Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 38909 Accepted: 16862 ...
- POJ 3624 Charm Bracelet(01背包)
Charm Bracelet Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 34532 Accepted: 15301 ...
随机推荐
- javafx progressbar
import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans ...
- JNDI学习总结(3)——Tomcat下使用C3P0配置JNDI数据源
一.C3P0下载 C3P0下载地址:http://sourceforge.net/projects/c3p0/files/?source=navbar 下载完成之后得到一个压缩包. 二.使用C3P0配 ...
- Springboot2.0访问Redis集群
Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作高性能的key-value数据库.缓存和消息中间件,掌握它是程序员的必备技能,下面是一个springboot访问redis的 ...
- Linux 安装Nginx具体图解教程
系统:Centos6.6 64位 Nginx: http://nginx.org/en/download.html 眼下最新版本号1.9.4 我下载1.8.0 watermark/2/text/a ...
- bug 7715339 登录失败触发 ‘row cache lock’ 等待
Bug 7715339 - Logon failures causes "row cache lock" waits - Allow disable of logon delay ...
- 使用MERGE语句同步表
先建好測试环境: USE TEMPDB GO IF OBJECT_ID('T1') IS NOT NULL DROP TABLE T1 IF OBJECT_ID('T2') IS NOT NULL D ...
- 【原创】k8s源代码分析-----EndpointController
转自本人空间 http://user.qzone.qq.com/29185807/blog/1459325937 一.controller manager创建endpointController 代码 ...
- 非对称算法,散列(Hash)以及证书的那些事
转载请注明出处 http://blog.csdn.net/pony_maggie/article/details/35389657 作者:小马 这几个概念在金融电子支付领域用得比較多,我忽然认为把它们 ...
- ASP.NET MVC 4 (十一) Bundles和显示模式--asp.net mvc中 @Scripts.Render("~/bundles/jquery")是什么意思? 在布局文件中使用Scripts.Render()输出脚本包,Styles.Render()输出风格包:
ASP.NET MVC 4 (十一) Bundles和显示模式 ASP.NET MVC 4 引入的js打包压缩功能.打包压缩jquery目录下的文件,在布局文件中使用Scripts.Render()输 ...
- C++访问WebService gSoap方式
一. gSOAP访问WebService 1. 下载gSOAP gSOAP 2.7.17 版下载地址http://sourceforge.net/projects/g ...