LINK:Eden 的新背包问题

就是一个多重背包 每次去掉一个物品 询问钱数为w所能买到的最大值。

可以对于每次Q暴力dp 利用单调队列优化多重背包 这样复杂度是Qnm的。

发现过不了n==10的点。

仔细观察n==10的点 可以发现我们暴力枚举 某个物品不选之后的最大值即可。设状态f[i][j]表示第i个物品不选此时钱数为j的最大值。

求出这个复杂度是n^2m的 然后可以O(1)回答询问。

考虑正解 可以发现 对于01背包或者多重背包 去掉一个物品询问最大价值 动态直接去掉是不现实的。

考虑分治 分治到某个点上表示其他的都加入背包了 就当前点没有加入背包的最大值。

然后 对于分治的两边 暴力合并。可以发现这个合并是m^2的。

进一步的 可以发现 分治的复杂度极高 不如直接求出前后缀的背包和 然后进行合并。

怎么把合并的复杂度降下来是问题 类似于卷积不过这个是取max.

考虑每次询问 只询问w 而不是询问整个m 所以直接合并的复杂度为O(m).

复杂度为Qm。3e8 但是跑的飞快。

const int MAXN=1010;
int n,Q,m;
int f[MAXN][MAXN],g[MAXN][MAXN];
int q[MAXN],l,r;
struct wy{int w,c,v;}t[MAXN];
int main()
{
freopen("1.in","r",stdin);
get(n);m=1000;
rep(1,n,i)
{
int get(x),get(y),get(z);
t[i]=(wy){x,z,y};
}
rep(1,n,i)//前i个物品
{
for(int res=0;res<w(i);++res)
{
int ww=(m-res)/w(i);
l=r=1;q[1]=0;
f[i][res]=f[i-1][res];
rep(1,ww,j)
{
while(l<=r&&j-q[l]>c(i))++l;
int s=j*w(i)+res;
f[i][s]=max(f[i-1][s],f[i-1][q[l]*w(i)+res]+(j-q[l])*v(i));
while(l<=r&&f[i-1][s]>=f[i-1][q[r]*w(i)+res]+(j-q[r])*v(i))--r;
q[++r]=j;
}
}
}
fep(n,1,i)
{
for(int res=0;res<w(i);++res)
{
int ww=(m-res)/w(i);
l=r=1;q[1]=0;g[i][res]=g[i+1][res];
rep(1,ww,j)
{
while(l<=r&&j-q[l]>c(i))++l;
int s=j*w(i)+res;
g[i][s]=max(g[i+1][s],g[i+1][q[l]*w(i)+res]+(j-q[l])*v(i));
while(l<=r&&g[i+1][s]>=g[i+1][q[r]*w(i)+res]+(j-q[r])*v(i))--r;
q[++r]=j;
}
}
}
get(Q);
rep(1,Q,i)
{
int x,w;
get(x)+1;get(w);
int ans=0;
rep(0,w,j)ans=max(ans,f[x-1][j]+g[x+1][w-j]);
put(ans);
}
return 0;
}

luogu P4095 [HEOI2013]Eden 的新背包问题 多重背包 背包的合并的更多相关文章

  1. LUOGU P4095 [HEOI2013]Eden 的新背包问题

    题目描述 " 寄 没 有 地 址 的 信 ,这 样 的 情 绪 有 种 距 离 ,你 放 着 谁 的 歌 曲 ,是 怎 样 的 心 情 . 能 不 能 说 给 我 听 ." 失忆的 ...

  2. Luogu P4095 [HEOI2013]Eden的新背包问题

    题目 求出从前往后的背包\(f_{i,j}\)和从后往前的背包\(F_{i,j}\). 那么对于询问\((d,e)\),答案就是\(\max\limits_{i=0}^e f_{d-1,i}+F_{d ...

  3. Luogu P4095 [HEOI2013]Eden 的新背包问题 思维/动规

    当时一直在想前缀和...多亏张队提醒... 从1到n背次包,保存每一个状态下的价值,就是不要把第一维压掉:再从n到1背一次,同样记住每种状态: 然后询问时相当于是max(前缀+后缀),当然前缀后缀中间 ...

  4. P4095 [HEOI2013]Eden 的新背包问题

    P4095 [HEOI2013]Eden 的新背包问题 题解 既然假定第 i 个物品不可以选,那么我们就设置两个数组 dpl[][] 正序选前i个物品,dpr[][] 倒序选前i个物品 ,价格不超过 ...

  5. 题解——洛谷P4095 [HEOI2013]Eden 的新背包问题(背包)

    思路很妙的背包 用了一些前缀和的思想 去掉了一个物品,我们可以从前i-1个和后i+1个推出答案 奇妙的思路 #include <cstdio> #include <algorithm ...

  6. BZOJ 3163: [Heoi2013]Eden的新背包问题( 背包dp )

    从左到右, 从右到左分别dp一次, 然后就可以回答询问了. ---------------------------------------------------------- #include< ...

  7. BZOJ3163&Codevs1886: [Heoi2013]Eden的新背包问题[分治优化dp]

    3163: [Heoi2013]Eden的新背包问题 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 428  Solved: 277[Submit][ ...

  8. 洛谷P4095||bzoj3163 [HEOI2013]Eden 的新背包问题

    https://www.luogu.org/problemnew/show/P4095 不太会.. 网上有神奇的做法: 第一种其实是暴力(复杂度3e8...)然而可以A.考虑多重背包,发现没有办法快速 ...

  9. bzoj 3163: [Heoi2013]Eden的新背包问题

    Description "寄没有地址的信,这样的情绪有种距离,你放着谁的歌曲,是怎样的心心静,能不能说给我听."失忆的Eden总想努力地回忆起过去,然而总是只能清晰地记得那种思念的 ...

随机推荐

  1. thinkphp将对象变成一维数组?

    thinkphp使用select查询出的数据为二维数组,如果想将二维数组转一维,可以使用: $x为二维数组对象 php版本要大于5.5.0 $userid_array = array_column($ ...

  2. Kail安装VMtools

    0x00 前言 之前用吾爱的xp虚拟机,总是装不上vmtools,真是难受.每次跨机器粘贴复制都一件极其痛苦的事,而且虚拟机还不能直接浏览硬盘上的文件.虽说安全性保证了,但是这是真的痛苦.这两天开始用 ...

  3. 【python】Anaconda4 linux/windos安装

    一.什么是Anaconda 二.Win10 安装Anaconda 三.Linu 安装Anaconda ------------------------------------------------- ...

  4. 收集TCP端口的访问延迟和丢包率

    需求: 找一款工具可以对TCP 80端口 收集 访问延迟和丢包率 找到的工具: 1.Hping :  http://www.hping.org/ 2.paping : https://docs.azu ...

  5. Java实现 LeetCode第30场双周赛 (题号5177,5445,5446,5447)

    这套题不算难,但是因为是昨天晚上太晚了,好久没有大晚上写过代码了,有点不适应,今天上午一看还是挺简单的 5177. 转变日期格式   给你一个字符串 date ,它的格式为 Day Month Yea ...

  6. 最佳开发工具大全,GitHub Star 6.2k+

    一位曾经的谷歌工程师,花费两年时间,辛苦整理了一份清单.本文转自量子位,作者晓查.栗子.方驭洋,如有侵,可删! 这个名为 "xg2xg" 的清单,原本是这位前谷歌工程师(ex-Go ...

  7. 【学习记录】C#保存数据至CSV文档 & DateTime格式模式控制解释

    数据类的定义: public class Result_Display { private string id; public string ID { get { return id; } set { ...

  8. vscode安装rainbow-fart(彩虹屁)插件,程序员只能自我鼓励了!!!

    2020-7-10更新 Rainbow Fart 插件现以发布到 VSCode 商店,安装过 VSIX 版本的用户请卸载之前的版本,从商店安装. 从 VSCode 扩展商店 下载并安装.(更新vsco ...

  9. SSM框架前后端信息交互

    一.从前端向后端传送数据 常见的3种方式 1.form表单的action:此方法可以提交form表单内的输入数据,也可同时提交某些隐藏但设置有默认值的<input>,如修改问题时,我们除了 ...

  10. IDEA 2020版破解

    这期教一下大家如何破解IDEA 最新版破解教程 有以前的idea建议卸载哈~安装最新版的版本 一:我们首先去idea官网下载最新版 下方是idae官网2020最新链接 https://www.jetb ...