HDU 5410(2015多校10)-CRB and His Birthday(完全背包)
来源:互联网 发布:windows怎样安装redis 编辑:程序博客网 时间:2024/06/09 22:34
题目地址:HDU 5410
题意:有M元钱,N种礼物,若第i种礼物买x件的话,会有Ai*x+Bi颗糖果,现给出每种礼物的单价、Ai值与Bi值,问最多能拿到多少颗糖果。
思路:完全背包问题。
dp[j][1]在当前物品时花钱为j的并且买过当前物品的最大值。
dp[j][0]不买当前这件物品此前花钱为j的的最大值。
每种物品的价值随Ai线性变化,但是不随B[i]线性变化,B[i]仅是在第一次挑选第i件物品是才算入,其他时候均不算入。所以我们可以写出状态转移方程:
dp[j][0]=max(dp[j][1],dp[j][0]);
dp[j][1]=max(dp[j-q[i].w][0]+q[i].a+q[i].b,dp[j-q[i].w][1]+q[i].a);
#include <stdio.h>#include <math.h>#include <string.h>#include <stdlib.h>#include <iostream>#include <sstream>#include <algorithm>#include <set>#include <queue>#include <stack>#include <map>#include <bitset>#pragma comment(linker, "/STACK:102400000,102400000")using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const double pi= acos(-1.0);const double esp=1e-7;const int Maxn=2010;struct node{ int a,b,w;}q[Maxn];int dp[Maxn][2];int main(){ int T,n,m,i,j; scanf("%d",&T); while(T--){ scanf("%d %d",&m,&n); for(i=1;i<=n;i++) scanf("%d %d %d",&q[i].w,&q[i].a,&q[i].b); memset(dp,0,sizeof(dp)); for(i=1;i<=n;i++){ for(j=0;j<=m;j++){ dp[j][0]=max(dp[j][1],dp[j][0]); if(j>=q[i].w) dp[j][1]=max(dp[j-q[i].w][0]+q[i].a+q[i].b,dp[j-q[i].w][1]+q[i].a); } } printf("%d\n",max(dp[m][0],dp[m][1])); } return 0;}
1 0
- HDU 5410(2015多校10)-CRB and His Birthday(完全背包)
- hdu 5410 CRB and His Birthday(01背包+完全背包)
- HDU 5410 CRB and His Birthday (01背包+完全背包)
- hdu 5410 CRB and His Birthday(01背包+完全背包)
- HDU 5410 CRB and His Birthday(完全背包,01背包)
- [HDU 5410]CRB and His Birthday[01、完全背包]
- hdu 5410 CRB and His Birthday 01完全混合背包
- [hdu 5410 CRB and His Birthday] 完全背包变形
- HDU 5410 CRB and His Birthday(完全背包)——多校练习10
- HDU 5410 CRB and His Birthday 混合背包(01背包和完全背包混合)
- hdu 5410 CRB and His Birthday 01背包和完全背包
- HDU 5410 CRB and His Birthday(01背包+完全背包)
- HDU 5410 CRB and His Birthday(完全背包+01背包)
- HDU 5410 CRB and His Birthday(01背包+完全背包)
- hdu 5410 CRB and His Birthday(0-1背包+完全背包)
- HDU-5410-CRB and His Birthday(01背包+完全背包 better)
- HDU 5410 CRB and His Birthday(01背包+完全背包)
- HDU 5410 CRB and His Birthday 01背包和完全背包混合
- CSS3中Media Queries
- Oracle 把字符串分割后保存到Table的一个字段中
- 九度oj 1116
- 五、触摸事件的吞噬和传递
- Unsupported major.minor version 51.0
- HDU 5410(2015多校10)-CRB and His Birthday(完全背包)
- ZOJ 2083
- python 获取html标签中的值
- Android大图片裁剪终极解决方案 原理分析
- 找不到R文件怎么办
- php-fpm 启动参数及重要配置详解
- 剑指off-判断5张牌是否是顺子
- SpringMVC 表单提交参数不匹配报错
- UVA---10608-Friends(并查集)