hdu 3466 Proud Merchants(0/1背包)
来源:互联网 发布:淘宝支付可以用花呗吗 编辑:程序博客网 时间:2024/04/29 21:32
点击打开链接hdu 3466
思路: 0/1背包
分析:
1 这一题和"hdu2546 饭卡"有点像,但是又有不同,不同的是这一题每一个物品都有一个限制的值Q[i],求最大的价值
2 题目明确提到每一种物品只能卖一次或这不卖,那这明显就是0/1的性质,但是现在多了一个条件钱不能少于Q[i]。这边的话我各种YY无果之后,果断看了题解,发现是要按照q-p排序,然后再做dp。
3 经过一番的YY之后,我明白了为什么按照q-p是正确的。我们都知道dp有一个很重要的特点就是无后效性,如果没有金钱的限制的话我们进行求解dp是肯定没有后效性的,但是有了金钱的限制之后完全就不一样了。
for (i=1; i<=n; i++)
for (j=m; j>=q[i]; j--)
dp[j]=max(dp[j],dp[j-p[i]]+v[i]);
要保证dp方程无后效性 j-p[i]一定要比j先算,那么当算i时,最小能算到q[i]-p[i],这样保证后面的可以用到前面的状态,因此以q[i]-p[i]排序即可保证无后效性。
代码:
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int MAX = 510;const int MAXN = 5010;struct Node{ int p; int q; int v; bool operator<(const Node& s)const{ return (q-p) < (s.q-s.p); }};Node node[MAX];int n , m , dp[MAXN];int solve(){ memset(dp , 0 , sizeof(dp)); sort(node+1 , node+1+n); for(int i = 1 ; i <= n ; i++){ for(int j = m ; j >= node[i].q; j--) dp[j] = max(dp[j] , dp[j-node[i].p]+node[i].v); } return dp[m];}int main(){ while(scanf("%d%d" , &n , &m) != EOF){ for(int i = 1 ; i <= n ; i++) scanf("%d%d%d" , &node[i].p , &node[i].q , &node[i].v); printf("%d\n" , solve()); } return 0;}
- hdu 3466 Proud Merchants(0/1背包)
- hdu 3466 Proud Merchants(0-1背包+排序)
- HDU Proud Merchants 3466 0-1背包变形
- HDOJ 3466 Proud Merchants 【0 1背包】
- HDU 3466 Proud Merchants 01背包
- HDU 3466 Proud Merchants (背包)
- HDU 3466 Proud Merchants (背包问题)
- [01背包]HDU 3466 Proud Merchants
- hdu 3466 Proud Merchants(背包问题)
- HDU 3466 - Proud Merchants(01背包)
- HDU 3466 Proud Merchants(01背包)
- hdu 3466 Proud Merchants(01 背包)
- HDU--3466--Proud Merchants--01背包
- HDU 3466--Proud Merchants【01背包变形】
- hdu 3466 Proud Merchants(贪心+背包)
- hdu 3466(排序+背包)Proud Merchants
- HDU 3466(Proud Merchants)有条件01背包
- hdu 3466 Proud Merchants(01背包)
- 雨松MOMO《Unity 3D游戏开发》源码公布
- 使MySQL对表名不区分大小写
- 读书有感
- java_基础加强--泛型
- C++之模板函数
- hdu 3466 Proud Merchants(0/1背包)
- 在Unity3D的网络游戏中实现资源动态加载
- Objective - c 创建二维数组
- 黑马程序员java学习—流的操作
- 学习Java中的static
- 去交错Deinterlace算法介绍
- .NET中加密和解密的实现方法
- VS2010恢复默认设置
- SRP6针对于网游登录服的应用