DSY3163*Eden的新背包问题
Description
“寄没有地址的信,这样的情绪有种距离,你放着谁的歌曲,是怎样的心心静,能不能说给我听。”
失忆的Eden总想努力地回忆起过去,然而总是只能清晰地记得那种思念的感觉,却不能回忆起她的音容笑貌。 记忆中,她总是喜欢给Eden出谜题:在 valentine’s day 的夜晚,两人在闹市中闲逛时,望着礼品店里精巧玲珑的各式玩偶,她突发奇想,问了 Eden这样的一个问题:有n个玩偶,每个玩偶有对应的价值、价钱,每个玩偶都可以被买有限次,在携带的价钱m固定的情况下,如何选择买哪些玩偶以及每个玩偶买多少个,才能使得选择的玩偶总价钱不超过m,且价值和最大。众所周知的,这是一个很经典的多重背包问题,Eden很快解决了,不过她似乎因为自己的问题被飞快解决感到了一丝不高兴,于是她希望把问题加难:多次 询问,每次询问都将给出新的总价钱,并且会去掉某个玩偶(即这个玩偶不能被选择),再问此时的多重背包的答案(即前一段所叙述的问题)。
这下Eden 犯难了,不过Eden不希望自己被难住,你能帮帮他么?
Input
第一行一个数n,表示有n个玩偶,玩偶从0开始编号
第二行开始后面的 n行,每行三个数 ai, bi, c i,分别表示买一个第i个玩偶需
要的价钱,获得的价值以及第i个玩偶的限购次数。
接下来的一行为q,表示询问次数。
接下来q行,每行两个数di. ei表示每个询问去掉的是哪个玩偶(注意玩偶从0开始编号)以及该询问对应的新的总价钱数。(去掉操作不保留,即不同询问互相独立)
Output
输出q行,第i行输出对于第 i个询问的答案。
Sample Input
2 3 4
1 2 1
4 1 2
2 1 1
3 2 3
5
1 10
2 7
3 4
4 8
0 5
Sample Output
11
6
12
4
1 #include<cstdio> 2 #include<iostream> 3 #include<cstdlib> 4 using namespace std; 5 int f[10010][1010]={0},f2[10010][1010]={0},a[1111]={0},b[1111]={0},c[1111]={0},d[300005]={0},e[300005]={0},v[10010]={0},w[10010]={0}; 6 int s[1111]={0}; 7 int main() 8 { 9 int n=0,q=0,tot; 10 scanf("%d",&n); 11 for (int i=1;i<=n;i++) 12 scanf("%d%d%d",&a[i],&b[i],&c[i]); 13 tot=0; 14 int now=1,x=0,t=0; 15 while (now<=n)//二进制优化 16 { 17 x=1; 18 t=c[now]; 19 while (t-x>0) 20 { 21 ++tot; 22 w[tot]=x*a[now]; 23 v[tot]=x*b[now]; 24 t-=x; 25 x=x*2; 26 } 27 if (t>0) 28 { 29 ++tot; 30 v[tot]=t*b[now]; 31 w[tot]=t*a[now]; 32 } 33 s[now]=tot; 34 ++now; 35 } 36 cin>>q; 37 int me=0; 38 for (int i=1;i<=q;++i)//寻找询问中最大的容量 39 { 40 scanf("%d%d",&d[i],&e[i]); 41 d[i]+=1; 42 if (e[i]>me) 43 me=e[i]; 44 } 45 for (int i=1;i<=tot;++i)//正着 46 for (int j=0;j<=me;++j) 47 if (j<w[i]) 48 f[i][j]=f[i-1][j]; 49 else f[i][j]=max(f[i-1][j],f[i-1][j-w[i]]+v[i]); 50 for (int i=tot;i>=1;i--)//倒着 51 for (int j=0;j<=me;++j) 52 if (j<w[i]) 53 f2[i][j]=f2[i+1][j]; 54 else f2[i][j]=max(f2[i+1][j],f2[i+1][j-w[i]]+v[i]); 55 int ans=0; 56 for (int i=1;i<=q;++i) 57 { 58 ans=0; 59 for (int j=0;j<=e[i];++j)//枚举两边的容量如何分配 60 if (f[s[d[i]-1]][j]+f2[s[d[i]]+1][e[i]-j]>ans) 61 ans=f[s[d[i]-1]][j]+f2[s[d[i]]+1][e[i]-j]; 62 printf("%d\n",ans); 63 } 64 return 0; 65 }
转载于:https://www.cnblogs.com/Maxxzy/p/6228636.html
DSY3163*Eden的新背包问题相关推荐
- BZOJ3163 [Heoi2013]Eden的新背包问题
如果是裸的多重背包就非常简单了... 用f[i]表示用了cost为i的时候的最大价值 所以我们二分某一段[l, r]之间的物品不使用,剩下的都使用的最大值,这时的f[]数组可以由之前的f[]数组得到. ...
- 【题解】lugu P4095 Eden的新背包问题
总结: 1. 50分的代码(因为由多个数据,所以不能改变num[]数组) #include<bits/stdc++.h> using namespace std; struct node{ ...
- 2287. 【POJ Challenge】消失之物(数组递推\分治优化背包)
2287. [POJ Challenge]消失之物 这题的思想和P4564 [CTSC2018]假面优化的思想一样,应该反过来说,假面那个题应该是借鉴这题的思路. 显然不能枚举每个物品消失O(n)O( ...
- [背包DP] 洛谷相关题目整理与练习(74题-)
题目 以背包为标签,搜出了这么多题,按难度排序,一道一道做: (*):下面有提到 TODO 题目 难度 备忘录 AC 采药 普及- 01背包模板 AC 开心的金明 普及- 01背包模板 AC 小A点菜 ...
- [颓废史]蒟蒻的刷题记录
QAQ蒟蒻一枚,其实我就是来提供水题库的. 以下记录从2016年开始. 1.1 1227: [SDOI2009]虔诚的墓主人 树状数组+离散化 3132: 上帝造题的七分钟 树状数组 二维区间加减+查 ...
- 退役前的做题记录2.0
退役前的做题记录2.0 最近在刷省选题......大致上是按照省份刷的. 不过上面的题目顺序是按照写题的顺序排列的,所以可能会有点乱哈. [BZOJ2823][AHOI2012]信号塔 最小圆覆盖,随 ...
- 【整理向】OJ上一些不(jiao)错(shui)的背包题
CodeVS 1491 取物品 1047 邮票面值设计 3372 选学霸 1155 金明的预算方案 1014 装箱问题 BZOJ 3407: [Usaco2009 Oct]Bessie's Weigh ...
- Team Task:DP
我分到的任务是看ppt--so这篇blog大概就是我的任务进度了?好像还混杂了一些奇怪的求助-- 提纲篇 又名如何高效看PPT? 动态规划优化.pdf By ExfJoe 2018/4/11 14: ...
- 成为Java GC专家(5)—Java性能调优原则
2019独角兽企业重金招聘Python工程师标准>>> 这是"成为Java GC专家"系列的第五篇文章.在第一篇深入浅出Java垃圾回收机制中,我们已经学习了不同 ...
最新文章
- Install NSCA
- Go 语言的垃圾回收演化历程:垃圾回收和运行时问题
- 浏览器是如何解析html的?
- 嵌入式系统——RS232和RS449
- python写彩票程序30选7_写一个彩票程序:30选7
- 4个月掌握核心技术 成为云计算行业专家
- MATLAB 2017b 安装教程,这一篇文章就够了。强烈推荐!!!!!
- 直击固定资产管理痛点,让企业轻松管理海量固定资产
- Java 参数类型后面三个点,可变参数列表
- mysql汽车租赁管理系统
- 安卓基于图像识别和CNN做出一个通用的斗地主记牌器(一)
- 如何用计算机串口烧录芯片,如何使用串口烧写xmc1301芯片.pdf
- 简单介绍一下ODI的几个基本概念
- 定时任务---Only no-arg methods may be annotated with @Scheduled
- python: 百度地图api爬虫
- 基于Java Web的在线考试系统的实现
- OSPF路由协议及工作原理(一)
- 1,0在js中有可能会等于true和false来去判断的
- Java 实现重试机制
- Navicat下载,安装,PJ和简单使用的详细图文教程
热门文章
- (三)集成学习上——偏差与方差
- Android 保存QQ密码(数据存储:文件存储、SharedPreferences)
- 给自己电脑增加数T的空间(不用添加硬盘)
- 网页设计有什么标准?细说网页设计的6大规范
- 短视频配音用什么软件好?短视频配音软件免费哪款好用?
- wamp+cmd命令行配置zend框架
- 正弦曲线投影及ENVI下Modis数据坐标投影定义
- android 系统图标资源,Android系统资源图标android.R.drawable
- Windows10+Ubuntu18 双系统安装的血与泪【附许多资源链接】
- CPU主频,倍频,外频,系统总线频率,前端总线频率 ——网络上查到的比较清楚的解释