HDU - 3466(01背包理解)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3466
题意:给你一些钱 m ,然后在这个国家买东西, 共有 n 件物品,每件物品价格P价值V还有一个很特别的属性Q, Q指你如过想买这件物品,你的手中至少有Q钱 。虽然你只要花费钱P ,但你的手中至少有钱Q,如果不足Q ,不能买。问给你钱M ,列出N件物品,最多能获得多少价值的东西。
思路:如果没有Q的限制,显然是裸的01背包。DP,还是贪心求解,需要满足一个无后效性,其中所谓的无后效性是指:“下一时刻的状态只与当前状态有关,而和当前状态之前的状态无关,当前的状态是对以往决策的总结”。01背包的状态转移方程是:
,显然状态实际上是从或者转移过来的。那么什么时候可以转移呢?是这个状态的花费,那么是当前我所剩下的钱,只有当的时候,才能转移。整理一下就是,即可以更新的区间是,根据无后效性是指,前面的在更新时对后面的决策无影响,只允许新数据覆盖旧数据,也就是说前面的更新的范围应该比后面的大。所以就是;即按照从大到小排序,才能保证新数据覆盖旧数据而不丢失状态。
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5+7;
struct node
{int p, q, v;
}a[N];
int n, m, dp[N];
bool cmp(node a, node b)
{return a.p - a.q > b.p - b.q;
}
int main()
{while(~scanf("%d%d",&n,&m)){memset(dp,0,sizeof(dp));for(int i = 0; i < n; i++)scanf("%d%d%d",&a[i].p,&a[i].q,&a[i].v);sort(a, a+n, cmp);for(int i = 0; i < n; i++)for(int j = m; j >= a[i].q; j--)dp[j] = max(dp[j], dp[j-a[i].p] + a[i].v);printf("%d\n",dp[m]);}
}
参考:https://www.bbsmax.com/A/Ae5RXoX8zQ/
HDU - 3466(01背包理解)相关推荐
- HDU 3466 01背包变形
给出物品数量N和总钱数M 对于N个物品.每一个物品有其花费p[i], 特殊值q[i],价值v[i] q[i] 表示当手中剩余的钱数大于q[i]时,才干够买这个物品 首先对N个物品进行 q-p的排序,表 ...
- hdu 2955 01背包
http://acm.hdu.edu.cn/showproblem.php?pid=2955 如果认为:1-P是背包的容量,n是物品的个数,sum是所有物品的总价值,条件就是装入背包的物品的体积和不能 ...
- hdu 3732(01背包转多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3732 思路:这么大的数据,用01背包肯定会TLE的,01背包转多重背包..最多也就11*11=121件 ...
- hdu 1574(01背包)
RP问题 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Problem Des ...
- HDU 2546(01背包)
饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- hdu 2184 01背包变形
转自:http://blog.csdn.net/liuqiyao_01/article/details/8753686 题意:这是又是一道01背包的变体,题目要求选出一些牛,使smartness和fu ...
- HDU - Robberies(01背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2955 Time Limit: 2000/1000 MS (Java/Others) Memory Li ...
- hdu 2602 01背包入门
Many years ago , in Teddy's hometown there was a man who was called "Bone Collector". This ...
- 洛谷 P1417 烹调方案 (01背包拓展)
一看到这道题就是01背包 但是我注意到价值和当前的时间有关. 没有想太多,直接写,0分 然后发现输入方式不对-- 改了之后只有25分 我知道wa是因为时间会影响价值,但不知道怎么做. 后来看了题解,发 ...
最新文章
- 基于Vue开发的购物车案例
- 022_html计算机输出标签
- mysql移植海思_minigui在海思解决方案(hi3515芯片)上的移植过程(转)
- 第九届蓝桥杯省赛JavaC组真题——详细答案对照(完整版)
- 理论基础 —— 排序
- 数据赋能变现时代,应用有哪些有效的变现方式?
- HDU1106 排序(解法二)(废除!!!)
- css3弹性伸缩和使用
- 软件测试——测试用例设计测试分类详解
- # 研究杂感 × Gephi(第一辑)
- java fly bird小游戏_实战|JavaScript实现Fly Bird小游戏-【安基网】
- 基于java的婚恋交友动态网站
- 嵌入式_cpu微架构、互连结构与总线
- X5腾讯内核 安装线上内核本来能用,突然报115错误问题记录
- Master in Vocab -- Day Six
- 赛马命运已成,微盟在劫难逃
- php怎么显示gif图片,如何让伪进度条在页面上显示成gif图像
- 第6章gp_toolkit管理架构_gp_bloat_diag
- VScode下载很慢解决办法
- 小程序 模拟今日头条导航栏,点击锚点跳转对应楼层