题解——洛谷P4095 [HEOI2013]Eden 的新背包问题(背包)
思路很妙的背包
用了一些前缀和的思想
去掉了一个物品,我们可以从前i-1个和后i+1个推出答案
奇妙的思路
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
int f[][][]={},v[]={},w[],num[],n,q,V;
void zypack(int w,int v,int j,int wic){
if(wic==)
for(int i=V;i>=v;i--)
f[j][i][wic]=max(f[j][i-v][wic]+w,f[j][i][wic]);
else
for(int i=V;i>=v;i--)
f[j][i][wic]=max(f[j][i-v][wic]+w,f[j][i][wic]);
}
void wqpack(void){
for(int i=;i<=n;i++){
for(int j=;j<=V;++j)
f[i][j][]=f[i-][j][];
int rec=num[i];
int mid=;
while(mid<=num[i]){
zypack(w[i]*mid,v[i]*mid,i,);
num[i]-=mid;
mid*=;
}
zypack(w[i]*num[i],v[i]*num[i],i,);
num[i]=rec;
}
for(int i=n;i>=;i--){
for(int j=;j<=V;++j)
f[i][j][]=f[i+][j][];
int mid=;
int rec=num[i];
while(mid<=num[i]){
zypack(w[i]*mid,v[i]*mid,i,);
num[i]-=mid;
mid*=;
}
zypack(w[i]*num[i],v[i]*num[i],i,);
num[i]=rec;
}
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++){
scanf("%d %d %d",&v[i],&w[i],&num[i]);
}
V=;
scanf("%d",&q);
wqpack();
// for(int i=1;i<=10;i++)
// for(int j=1;j<=n;j++)
// printf("f[%d][%d][0]=%d f[%d][%d][1]=%d\n",j,i,f[j][i][0],j,i,f[j][i][1]); for(int i=;i<=q;i++){
int x,y;
scanf("%d %d",&x,&y);
int ans=;
for(int j=;j<=y;j++)
ans=max(ans,f[x][j][]+f[x+][y-j][]);
printf("%d\n",ans);
}
return ;
}
题解——洛谷P4095 [HEOI2013]Eden 的新背包问题(背包)的更多相关文章
- P4095 [HEOI2013]Eden 的新背包问题
P4095 [HEOI2013]Eden 的新背包问题 题解 既然假定第 i 个物品不可以选,那么我们就设置两个数组 dpl[][] 正序选前i个物品,dpr[][] 倒序选前i个物品 ,价格不超过 ...
- BZOJ 3163: [Heoi2013]Eden的新背包问题( 背包dp )
从左到右, 从右到左分别dp一次, 然后就可以回答询问了. ---------------------------------------------------------- #include< ...
- luogu P4095 [HEOI2013]Eden 的新背包问题 多重背包 背包的合并
LINK:Eden 的新背包问题 就是一个多重背包 每次去掉一个物品 询问钱数为w所能买到的最大值. 可以对于每次Q暴力dp 利用单调队列优化多重背包 这样复杂度是Qnm的. 发现过不了n==10的点 ...
- LUOGU P4095 [HEOI2013]Eden 的新背包问题
题目描述 " 寄 没 有 地 址 的 信 ,这 样 的 情 绪 有 种 距 离 ,你 放 着 谁 的 歌 曲 ,是 怎 样 的 心 情 . 能 不 能 说 给 我 听 ." 失忆的 ...
- Luogu P4095 [HEOI2013]Eden 的新背包问题 思维/动规
当时一直在想前缀和...多亏张队提醒... 从1到n背次包,保存每一个状态下的价值,就是不要把第一维压掉:再从n到1背一次,同样记住每种状态: 然后询问时相当于是max(前缀+后缀),当然前缀后缀中间 ...
- Luogu P4095 [HEOI2013]Eden的新背包问题
题目 求出从前往后的背包\(f_{i,j}\)和从后往前的背包\(F_{i,j}\). 那么对于询问\((d,e)\),答案就是\(\max\limits_{i=0}^e f_{d-1,i}+F_{d ...
- BZOJ3163&Codevs1886: [Heoi2013]Eden的新背包问题[分治优化dp]
3163: [Heoi2013]Eden的新背包问题 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 428 Solved: 277[Submit][ ...
- 洛谷P4095||bzoj3163 [HEOI2013]Eden 的新背包问题
https://www.luogu.org/problemnew/show/P4095 不太会.. 网上有神奇的做法: 第一种其实是暴力(复杂度3e8...)然而可以A.考虑多重背包,发现没有办法快速 ...
- 3163: [Heoi2013]Eden的新背包问题
Description "寄没有地址的信,这样的情绪有种距离,你放着谁的歌曲,是怎样的心心静,能不能说给我听."失忆的Eden总想努力地回忆起过去,然而总是只能清晰地记得那种思念的 ...
随机推荐
- verilog代码基础
verilog拼接符用法: https://zhidao.baidu.com/question/531343285.html wire [31:0] bit_mask = { {8{be[3]}}, ...
- 从网站上扒网页,保存为file文件格式
保存下来的页面总是有部分特效缺失,可是文件包里已经有好几个js文件了. 例如想保存易迅的搜索页面,条件筛选栏的按钮全部失效了,按钮-更多.多选等 都没有反应,搜索结果的鼠标悬浮显示完整信息也没有了. ...
- LinkedList 底层实现原理
LinkedList的底层实现原理 LinkedList 底层数据结构为双向链表,链表结构,基于一个个链表节点Node 1,Inner Class 内部类 private static class N ...
- org/hibernate/ejb/HibernatePersistence
java.lang.NoClassDefFoundError: org/hibernate/ejb/HibernatePersistence 缺少依赖包:hibernate-entitymanager ...
- SQL Server 配置管理器
- Axis2基础
本章主要介绍如何使用axis2开发webservice接口. 以下以一个实例程序讲解如何编写一个axis2的服务端和客户端. axis2版本:axis2-1.5.4-bin.zip 目录结构: 关键代 ...
- MyBatis学习(一)简单入门程序
MyBatis入门学习 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名 ...
- maven 项目打可执行jar包
昨晚,突然就来了紧急任务. 验签较慢,着手优化,发来一个demo. 首先需要把该demo部署在Linux上. 该项目是maven 项目,所以用maven打个jar包,打完jar包之后, ...
- <转>jmeter(一)基础介绍
本博客转载自:http://www.cnblogs.com/imyalost/category/846346.html 个人感觉不错,对jmeter讲解非常详细,担心以后找不到了,所以转发出来,留着慢 ...
- 一个Java系统测试
实验感受: 本次实验最大的感受,就是不要改代码,自己写,代码改起来真的没完没了,不知道会出现什么问题.还有就是一定要清楚自己要怎么去写,流程很重要,一个个功能去实现. 主界面 数据库 主页面代码 &l ...