2120 : 安详

题目描述

spring最近喜欢上了B站新秀主播,身为顿顿吃黄焖鸡的土豪,当然要过去打赏一番,但是spring还是喜欢精打细算,所以在打赏的时候,想要掏出有限的钱,获得主播的最大好感。

主播的好感值是通过送不同的礼物而提升不同,不同礼物的赠送,可以增加的好感值也是不同的,当然礼物的价格更是不同。

输入

输入第一行为两个整数n,m.分别表示有n种不同礼物(1e2)和总金钱数m(1e6),以下n行每行有三个数字,分别表示该礼物的个数(int)和价格(int)以及好感值(int)。 多实例

输出

求spring拿出的钱可以送出的最大好感值。

样例输入

复制
2 10
4 2 100
2 4 100

样例输出

复制
400

多重背包解决思路:

 题目:有N种物品和一个容量为V的背包。第i种物品最多有num[i]件可用,每件容量是c[i],价值是w[i]。

转换成01背包:二进制优化方法是:将第i种物品分成若干件物品,其中每件物品有一个系数,这件物品的容量和价值均是原来的容量和价值乘以这个系数。使这些系数分别为1,2,4,...,2^(k-1),(以及二进制尾数部分)num[i]-2^k+1,且k是满足num[i]-2^k+1>0的最大整数。例如,如果n[i]为13,就将这种物品分成系数分别为1,2,4,6的四件物品。

  

 #define N 10008
#define M 1000008 ll dp[M];
struct node{
ll c,w; //c为cost,w为好感度
}p[N]; int main(){ ll nn,m;
while(scanf("%lld%lld",&nn,&m)!=EOF){
int cnt=;//拆分后的物品数
ll t,c,w; for(int i=;i<=nn;i++){
scanf("%lld%lld%lld",&t,&c,&w); //数量,花费,好感度
int x=;
while(t-x>){
t-=x;
p[++cnt].c=x*c;
p[cnt].w =x*w;
x*=;
}
p[++cnt].c=t*c; //跑完上面的循环后剩下t
p[cnt].w=t*w;
} memset(dp,,sizeof(dp));
for(int i=;i<=cnt;i++){
for(int j=m;j>=p[i].c;j--){ //花费自大到小
dp[j]=max(dp[j],dp[j-p[i].c]+p[i].w);
}
} printf("%lld\n",dp[m]);
} return ;
}
#define N 10008
#define M 1000008 ll dp[M];
struct node{
ll c,w; //c为cost,w为好感度
}p[N]; int main(){ ll nn,m;
while(scanf("%lld%lld",&nn,&m)!=EOF){
int cnt=;//拆分后的物品数
ll t,c,w; for(int i=;i<=nn;i++){
scanf("%lld%lld%lld",&t,&c,&w); //数量,花费,好感度
int x=;
while(t-x>){
t-=x;
p[++cnt].c=x*c;
p[cnt].w =x*w;
x*=;
}
p[++cnt].c=t*c; //跑完上面的循环后剩下t
p[cnt].w=t*w;
} memset(dp,,sizeof(dp));
for(int i=;i<=cnt;i++){
for(int j=m;j>=p[i].c;j--){ //花费自大到小
dp[j]=max(dp[j],dp[j-p[i].c]+p[i].w);
}
} printf("%lld\n",dp[m]);
} return ;
}

(头文件都私奔找对象去啦!)

【二进制优化-多重背包】zznu-oj-2120 : 安详--如何用尽钱币打赏主播获得最大好感度的更多相关文章

  1. poj1014二进制优化多重背包

    Dividing Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 53029   Accepted: 13506 Descri ...

  2. 51nod 1086 背包问题 V2(二进制优化多重背包)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1086 题解:怎么用二进制优化多重背包,举一个例子就明白了. ...

  3. POJ - 1276 二进制优化多重背包为01背包

    题意:直接说数据,735是目标值,然后3是后面有三种钱币,四张125的,六张五块的和三张350的. 思路:能够轻易的看出这是一个多重背包问题,735是背包的容量,那些钱币是物品,而且有一定的数量,是多 ...

  4. [Bzoj 1192][HNOI2006]鬼谷子的钱袋(二进制优化多重背包)

    (人生第一篇bzoj题解有点激动 首先介绍一下题目: 看它题目那么长,其实意思就是给定一个数a,求将其拆分成n个数,通过这n个数可以表示出1~a中所有数的方案中,求最小的n. 您看懂了嘛?不懂咱来举个 ...

  5. BZOJ 1531 二进制优化多重背包

    思路: 讲道理我应该写单调队列优化多重背包的 但是我不会啊 但是我现在! 还不会啊 我就写了个二进制优化的.. 过了 //By SiriusRen #include <cstdio> #i ...

  6. poj 1742 Coins(二进制优化多重背包)

    传送门 解题思路 多重背包,二进制优化.就是把每个物品拆分成一堆连续的\(2\)的幂加起来的形式,然后把最后剩下的也当成一个元素.直接类似\(0/1\)背包的跑就行了,时间复杂度\(O(nmlogc) ...

  7. Codeforces 755F PolandBall and Gifts bitset + 二进制优化多重背包

    PolandBall and Gifts 转换成置换群后, 对于最大值我们很好处理. 对于最小值, 只跟若干个圈能否刚好组能 k 有关. 最直观的想法就是bitset优化背包, 直接搞肯定T掉. 我们 ...

  8. [tyvj-1194]划分大理石 二进制优化多重背包

    突然发现这个自己还不会... 其实也不难,就和快速幂感觉很像,把物品数量二进制拆分一下,01背包即可 我是咸鱼 #include <cstdio> #include <cstring ...

  9. [POJ1014]Dividing(二进制优化多重背包)

    #include <cstdio> #include <algorithm> #include <cstring> using namespace std; int ...

随机推荐

  1. excel自学笔记 from av50264533

    1.函数公式 MINUTE(serial_number)  函数解读 Serial_number 表示一个时间值,其中包含要查找的分钟  函数公式 NOW()  函数解读 显示出现在的时间 计算通话时 ...

  2. CentOS 7 命令

    常用命令 文件与目录操作 命令 解析 cd /home 进入 ‘/home’ 目录 cd .. 返回上一级目录 cd ../.. 返回上两级目录 cd - 返回上次所在目录 cp file1 file ...

  3. web系统整体优化

    关于web系统整体优化提速总结   关于web系统整体优化提速总结 一.背景 随着公司业务的拓展,随之而来就是各种系统横向和纵向的增加,PV.UV也都随之增加,原有的系统架构和模式慢慢遇上了瓶颈,需要 ...

  4. Asp.Net Core 客户端验证和远程验证

    我们先来看这样一个注册页面和它的后台Model @model RegisterViewModel @{ ViewBag.Title = "用户注册"; } <h1>用户 ...

  5. Linux安装expect

    主要参考:https://www.cnblogs.com/zhenbianshu/p/5867440.html expect解释器 expect是一个能实现自动和交互式任务的解释器,它也能解释常见的s ...

  6. S1. Android 功能大全

    [概述] 这篇文章主要描述安卓开发中可能实现的功能点. [准备工作] IDE:Android Studio,简单操作 如何创建一个 Android 项目 Android 项目结构分析 Androidm ...

  7. 洛谷 P1019单词接龙

    看吧,多简单啊,没有人受伤的世界完成了.                                                                                ...

  8. Python之并行编程笔记

    概述: 非并发: 1 程序由单个步骤序列构成  2 包含独立子任务的程序执行性能低 并发:  1 异步.高效  2 分解子任务.简化流程与逻辑 进程process:1 一个程序的执行实例  2 每个进 ...

  9. 【规律】Parentheses

    Parentheses 题目描述 Dave loves strings consisting only of '(' and ')'. Especially, he is interested in ...

  10. (错误) Eclipse使用Maven创建Web时错误

    转自:http://blog.csdn.net/afgasdg/article/details/12757433 问题描述: 使用Eclipse自带的Maven插件创建Web项目时报错: Could ...