HDU 5410(2015多校10)-CRB and His Birthday(全然背包)
题目地址: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;
}
HDU 5410(2015多校10)-CRB and His Birthday(全然背包)的更多相关文章
- HDU 5407(2015多校10)-CRB and Candies(组合数最小公倍数+乘法逆元)
题目地址:pid=5407">HDU 5407 题意:CRB有n颗不同的糖果,如今他要吃掉k颗(0<=k<=n),问k取0~n的方案数的最小公倍数是多少. 思路:首先做这道 ...
- hdu 5288||2015多校联合第一场1001题
pid=5288">http://acm.hdu.edu.cn/showproblem.php?pid=5288 Problem Description OO has got a ar ...
- hdu5414(2015多校10)--CRB and String(字符串匹配)
题目链接:pid=5414">点击打开链接 题目大意:有A.B两个字符串.如今有一种操作能够在A的随意一个字符x后面添加一个字符y(x.=y).问能不能将A变为B. 首先假设A能够变成 ...
- HDU 5358(2015多校联合训练赛第六场1006) First One (区间合并+常数优化)
pid=5358">HDU 5358 题意: 求∑i=1n∑j=in(⌊log2S(i,j)⌋+1)∗(i+j). 思路: S(i,j) < 10^10 & ...
- HDU 5373(2015多校7)-The shortest problem(模拟%11)
题目地址:pid=5373">HDU 5373 题意:给你一个数n和操作次数t,每次操作将n的各位数之和求出来放在n的末尾形成新的n,问t次操作后得到的n能否够被11整除. 思路:就是 ...
- HDU 5326(2015多校3)-Work(dfs)
题目地址:pid=5326">HDU 5326 题意:给一张有向图n个点.n - 1(....输入n-1)条边. A指向B代表A管理B.然后能够间接管理,比方A管理B,B管理C.则A管 ...
- hdu 5361 2015多校联合训练赛#6 最短路
In Touch Time Limit: 8000/4000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total ...
- HDU 5371(2015多校7)-Hotaru's problem(Manacher算法求回文串)
题目地址:HDU 5371 题意:给你一个具有n个元素的整数序列,问你是否存在这样一个子序列.该子序列分为三部分,第一部分与第三部分同样,第一部分与第二部分对称.假设存在求最长的符合这样的条件的序列. ...
- 2015暑假多校联合---CRB and His Birthday(01背包)
题目链接 http://acm.split.hdu.edu.cn/showproblem.php?pid=5410 Problem Description Today is CRB's birthda ...
随机推荐
- 今天又犯了Java/Scala里面substring的错误
每次都误以为是 substring(startIndex, length) 其实是 substring(startIndex, endIndex) 嗯 Java/Scala 跟 C++ 是不一样的.
- 基于Solr的HBase实时查询方案
实时查询方案 HBase+Solr+HBase-Indexer 1.HBase提供海量数据存储 2.solr提供索引构建与查询 3.HBase indexer提供自己主动化索引构建(从HBase到So ...
- 上机题目(中级)- 两个超级大的整数相加相减 (Java)
代码例如以下: public class AddSub { public static void main(String[] args) { String a="46328648326846 ...
- android 检測右滑的WebView
今天产品出新花样非得要右滑....检測到右滑手势后事件不做处理放在Activity中做对应的处理即可了. import android.app.Activity; import android.con ...
- HDU 2874 LCA离线算法 tarjan算法
给出N个点,M条边.Q次询问 Q次询问每两点之间的最短距离 典型LCA 问题 Marjan算法解 #include "stdio.h" #include "strin ...
- 关于spring和extjs对接的过程简述
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http:// ...
- flask-alembic数据迁移工具
alembic是用来做ORM模型与数据库的迁移与映射.alembic使用方式跟git有点类似,表现在两个方面, 第一,alemibi的所有命令都是以alembic开头: 第二,alembic的迁移文件 ...
- 一种比较高级的方法也可以修改windows为默认启动系统
运行: sudo mv /etc/grub.d/30_os-prober /etc/grub.d/06_os-probersudo update-grub
- 广播Intent的三种方式总结
1.android有序广播和无序广播的区别 BroadcastReceiver所对应的广播分两类:普通广播和有序广播. 普通广播通过Context.sendBroadcast()方法来发送.它是完全异 ...
- function——函数声明头的提升和预解析
函数: 即function语句的集合,就是将多个语句封装到一起: 函数的执行要会自己遍历,遇见函数 a():执行语句,就要移交控制权,函数执行完毕之后,控制权又移交回来了! 函数的参数要罗列在func ...