HDU 5410(2015多校10)-CRB and His Birthday(完全背包)
2015-08-21 15:58
337 查看
题目地址: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);
题意:有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; }
相关文章推荐
- 九度oj 1116
- scharr滤波器
- Python之shell清屏
- Unsupported major.minor version 51.0
- Oracle 把字符串分割后保存到Table的一个字段中
- 如何用shell取得字符串中的数字?
- xutils circularimageview不兼容解决方案
- angularjs自己总结
- C/C++编程题之计算一个数字的立方根
- Linux 安装python爬虫框架 scrapy
- oracle安装后,启动项设置和登录问题
- Linux 安装python爬虫框架 scrapy
- php memcache
- IP Address POJ 2105
- c#方法重载,可选参数,命名参数。
- c#Datagridview从数据库重新加载数据和向数据库提交更改
- Vs2010已安装,sql server 2008 management studio安装教程
- python 正则获取html中的值
- VCenter中嵌套openstack VM不能ping通外部网络问题解决办法
- Java并发编程:同步容器