题目链接:http://poj.org/problem?id=3624

题意:一共给出n种手镯,每个手镯有着各自的重量以及魅力值,在m重量下能得到的最大魅力值是多少。

分析:标准的01背包。状态转移如此:

dp[i][j]表示前i个手镯在重量为j的背包容量下能达到的最大魅力值。w[i]是第i个手镯的重量,d[i]是第i个手镯的魅力值。

如果某个超过背包重量,则一定不放入背包。问题则为剩余i-1个手镯装入重量的容量为j的背包得到的最大魅力值。

否则该手镯放入背包。问题则为剩余i-1个手镯装入重量的容量为j-w[i]的背包能到的的最大价值加上手镯i的价值d[i]。

if (w[i]>j) dp[i][j] = dp[i-1][j]

else dp[i][j] = max(dp[i-1][j-w[i]]+d[i],dp[i-1][j])

第一次用二维写的,,,好吧,貌似只能用一维这题

手工模拟一下发现dp[i,j]只跟之前的某几个值有关,再之前计算的结果就都没用了...
所以我们就可以用一个数组来重复使用了,不过要倒序,保证无后效性...

Sample Input4 6
1 4
2 6
3 12
2 7
Sample Output23

AC代码:

 1 #include<stdio.h>
 2 #include<math.h>
 3 #include<string.h>
 4 #include<ctype.h>
 5 #include<stdlib.h>
 6 #include <iostream>
 7 #include<algorithm>
 8 #include<queue>
 9
10 using namespace std;
11
12 #define N 13000
13 ///12880和3420你选哪个?
14 ///就不告诉你我之前写的是小的,不然也不会把二维的写出来啊,唉
15 int w[N],d[N],dp[N];
16
17 int main()
18 {
19     int n,k,i,j;
20
21     while(scanf("%d%d", &n,&k) != EOF)
22     {
23         memset(dp,0,sizeof(dp));///清零清零
24         for(i=0;i<n;i++)
25             scanf("%d %d", &w[i], &d[i]);
26
27         for(i=0;i<n;i++)
28             for(j=k;j>=w[i];j--)
29             dp[j]=max(dp[j], dp[j-w[i]]+d[i]);
30
31         printf("%d\n", dp[k]);
32     }
33     return 0;
34 }

转载于:https://www.cnblogs.com/weiyuan/p/5735675.html

POJ - 3624 Charm Bracelet相关推荐

  1. POJ 3624 Charm Bracelet 0-1背包

    传送门:http://poj.org/problem?id=3624 题目大意:XXX去珠宝店,她需要N件首饰,能带的首饰总重量不超过M,要求不超过M的情况下,使首饰的魔力值(D)最大. 0-1背包入 ...

  2. poj 3624 Charm Bracelet (01背包)

    题目链接:http://poj.org/problem?id=3624 //典型01背包问题 //状态转移方程dp[i][j]=max(dp[i-1][j],dp[i-1][j-w[i]]+d[i]) ...

  3. POJ 3624 Charm Bracelet

    DP 一直是心中痛,不多说了,这个暑假就坑在这上了. 这暑假第一道DP题,01背包问题. 题意是说物品有 重量和价值 ,但你能承受的重量有限,问你能带的最大价值. 这题数组开大点,尽管不知道有啥坑点, ...

  4. POJ 3624 Charm Bracelet(01背包 基础)

    题意: n个装饰品 容量m的背包 每个装饰品 重wi 价值 di 求能装的最大价值 思路:基础01背包 #include<stdio.h> #include<string.h> ...

  5. 【POJ - 3624 】Charm Bracelet (dp,0-1背包裸题)

    题干: Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to ...

  6. 我花了三个小时写了一道题的六千字题解....(POJ 2888 Magic Bracelet)

    整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 前置知识:小学生都能看懂的群论从入门到升天教程 <群论全家桶> 一道简单的题目 Probl ...

  7. AC日记——[USACO07DEC]手链Charm Bracelet 洛谷 P2871

    题目描述 Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like t ...

  8. Charm Bracelet(0-1)

    Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to fil ...

  9. Charm Bracelet

    Bessie has gone to the mall's jewelry store and spies a charm bracelet. Of course, she'd like to fil ...

最新文章

  1. c#调用Discuz的UCenter 1.5的API及示例。
  2. python定时关闭进程_Python子进程,定时延迟后终止进程
  3. 【Spring学习】spring提供的三种定时任务
  4. 如何上传本地图片到PictureBox控件
  5. Silverlight 5 Beta新特性[4]文本缩进控制
  6. UNIX/Linux 系统管理技术手册阅读(二)
  7. 面试官系统精讲Java源码及大厂真题 - 32 ReentrantLock 源码解析
  8. Promise 让异步更优
  9. nginx负载均衡配置-windows
  10. mysql 恢复空密码_mysql 找回密码
  11. 己椒苈黄汤治水肿案(联想的风)
  12. oracle excel vba6,vba6.dll下载
  13. MobaXterm连接Linux教程
  14. 数据结构与计算机网络参考书,2019计算机考研:数据结构参考书及复习重点
  15. 向日葵远程控制工具安装
  16. sql server 2005 修改表的模式 schema 为dbo
  17. 【26天高效学完Java编程】Day03:Java中的运算符与流程控制语句的基本概念与实操
  18. Android支付接入(一):支付宝
  19. 未对文件 C:\Users\Administrator\Documents\WindowsPowerShell\profile.ps1 进行数字签名。无法在当前系统上运行该脚本。
  20. 角雷达进入“高速增长期”,国产供应商迎来“突围”时间窗口

热门文章

  1. SQL 存储过程中,将串连的字符串当表用。
  2. 数据结构与算法(updating....)
  3. LeetCode(232)——用栈实现队列(JavaScript)
  4. 计算机网络学习笔记(16. 计算机网络与Internet发展历史)
  5. 【Vue2.0】—数据代理(一)
  6. 五分钟教你使用vue-cli3创建项目(三种创建方式,小白入门必看)
  7. 零基础带你学习MySQL—多子句查询(十九)
  8. 工作中你都遇到哪些不要脸的同事?
  9. 都是打工的,为啥职场中存在着那么多勾引斗角?
  10. 在中国南方电网工作是一种怎样的体验?