【CF480D】Parcels

题意:有一个栈,有n个物品,每个物品可以选或不选。如果选了第i个物品,则获得$v_i$的收益,且第i个物品必须在$in_i$时刻入栈,$out_i$时刻出栈。每个物品还有一个重量$w_i$和载荷$s_i$,栈底的载荷为m,你需要时刻保证一个物品(或栈底)上方的所有物品的重量之和不超过这个物品的载荷。问最大收益。

$n\le 500,m\le 1000$

题解:先将所有物品按右端点从小到大,如果右端点相同则左端点从大到小排列。设f[i][j]表示选择第i个物品,i及i上方的物品总重为j时这些物品的最大收益。在求f[i][j]时,我们需要扫一遍i上面的所有物品,为此我们引入辅助数组g[i](求不同的f[i][j]用的g[i]是不同的)(i是位置不是物品号),表示位置i前面的物品的最大总收益。因为我们已经排好序了,所以在新来一个物品时只需要g[out]=max(g[out],g[in]+f[x][..])即可。

#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int f[510][1010],g[1010];
int n,m;
struct node
{int l,r,w,v,s;
}p[510];
inline int rd()
{int ret=0,f=1;   char gc=getchar();while(gc<'0'||gc>'9')  {if(gc=='-')    f=-f;  gc=getchar();}while(gc>='0'&&gc<='9')  ret=ret*10+(gc^'0'),gc=getchar();return ret*f;
}
bool cmp(const node &a,const node &b)
{return (a.r==b.r)?(a.l>b.l):(a.r<b.r);
}
int main()
{n=rd(),m=rd();int i,j,k,l;for(i=1;i<=n;i++)   p[i].l=rd(),p[i].r=rd(),p[i].w=rd(),p[i].s=min(m,rd()),p[i].v=rd();sort(p+1,p+n+1,cmp);p[n+1].l=0,p[n+1].r=n<<1,p[n+1].s=m;for(i=1;i<=n+1;i++)  for(k=p[i].w;k<=m;k++){g[l=p[i].l]=0;for(j=1;j<i;j++)    if(p[j].l>=p[i].l){while(l<p[j].r)   l++,g[l]=g[l-1];g[l]=max(g[l],g[p[j].l]+f[j][min(k-p[i].w,p[i].s)]);}f[i][k]=g[l]+p[i].v;}printf("%d",f[n+1][m]);return 0;
}

转载于:https://www.cnblogs.com/CQzhangyu/p/8685671.html

【CF480D】Parcels DP相关推荐

  1. P4719 【模板】“动态 DP“动态树分治(矩阵/轻重链剖分/ddp)

    P4719 [模板]"动态 DP"&动态树分治 求解树上最大权独立集,但是需要支持修改. https://www.luogu.com.cn/problem/solution ...

  2. 全局平衡二叉树 P4751 【模板】“动态DP“

    全局平衡二叉树 P4751 [模板]"动态DP" P4751 [模板]"动态DP"&动态树分治(加强版) 有事没事就用 v e c t o r \tt ...

  3. 【luogu P5056】【模板】插头dp(插头DP)(分类讨论)

    [模板]插头dp 题目链接:luogu P5056 题目大意 有一个 n*m 的网格,每个格子要么必须铺线,要么必须不铺. 然后问你有多少个铺发使得形成一个闭合回路. 思路 快乐插头 DP 模板题. ...

  4. 【动态规划】区间dp: P1063能量项链

    本题和合并石子果子一样,都是枚举最后一次合并的点 [动态规划笔记]区间dp:合并果子_m0_52043808的博客-CSDN博客 区别: 1.需要断环为链 2.每一堆石子变为两个值,这里用结构体实现 ...

  5. 【动态规划】线性dp P1043 数字游戏

    思路: 这题和 [动态规划]P1018 线性dp:乘积最大_m0_52043808的博客-CSDN博客 十分类似,都是把一组数分成固定的部分,然后对分好的数进行特定的操作,求操作后所得的最值 所以,两 ...

  6. 【进阶】数位DP详解

    如果想了解更多内容,欢迎关注我的微信公众号:信息学竞赛从入门到巅峰. 戳这里获得更好的阅读体验哦 https://mp.weixin.qq.com/s/eZHoI7RZOvlEhhSNRpGhxA 今 ...

  7. 【BZOJ4976】宝石镶嵌 DP

    [BZOJ4976]宝石镶嵌 Description 魔法师小Q拥有n个宝石,每个宝石的魔力依次为w_1,w_2,...,w_n.他想把这些宝石镶嵌到自己的法杖上,来提升法杖的威力.不幸的是,小Q的法 ...

  8. NOJ 1111 保险箱的密码 【大红】 [区间dp]

    传送门 保险箱的密码 [大红] 时间限制(普通/Java) :  1000 MS/  3000 MS           运行内存限制 : 65536 KByte 总提交 : 118          ...

  9. 【动态规划】路径dp:蓝桥2020: 数字三角形

    [动态规划笔记]:POJ 3176 树塔_m0_52043808的博客-CSDN博客 结果输出 dp[n][n/2+1]如果n是奇数 max(dp[n][n/2],dp[n][n/2+1])如果n是偶 ...

最新文章

  1. 《程序是怎样跑起来的》第四章
  2. java校园足球管理系统_基于jsp的校园足球管理平台-JavaEE实现校园足球管理平台 - java项目源码...
  3. 2.异步回调检测线程结束
  4. hdfs深入:10、hdfs的javaAPI操作
  5. 利用等积变换巧解三角形面积问题
  6. Ubuntu虚拟机磁盘扩容+VM虚拟机开机多出1分30秒的解决方案(终极教程)
  7. 真格量化——50etf与期权对冲策略
  8. ant-pro使用Form表单验证上传图片出现的问题
  9. 学习笔记 9.22 -9.29 补
  10. Sci 论文参考文献期刊引用名PubMed缩写查询、endnote格式自定义方法
  11. 最近公司准备启动一个风险系统【Springboot + urule 】
  12. 帝国cms内容页模版
  13. element ui 中 el-checkbox-group 点击一个全部选中的问题
  14. Navicat常用快捷键汇总
  15. python爬虫之十一_scrapy框架经验、错误
  16. c#使用Aspose实现Word域套打
  17. 海信在柏林IFA推出8K叠屏和屏幕发声激光电视
  18. AVG2013nbsp;杀毒软件激活nbsp;…
  19. android架桥游戏,抖音搭桥小能手
  20. carla学习笔记:OpenDRIVE standalone mode

热门文章

  1. 项目集管理PgMP:聚焦战略、收益与治理︱项目管理者联盟联合创始人宣晓锋
  2. vue结合elementUI实现tag多标签页
  3. 大一python基础编程试卷_大学moocPython编程基础答案
  4. iptables屏蔽QQ与MSN
  5. org.apache.flink.table.api.TableException: A raw type backed by type information has no serializable
  6. 简易网页(HTML)
  7. c语言程序设计 滴水视频,编程达人滴水中级班视频教程
  8. 洛谷试炼场 动态规划TG.lv(2)
  9. nxp_3|虚拟机Linux内核资源
  10. Python基于OpenCV的人脸表情识别系统[源码&部署教程]