题目链接:Codeforces 480D Parcels

题目大意:就是有一个用来堆放货物的板,承重力为S。现在有N件货物,每件货物有到达的时间,运走的时间,以及

重量,承重,存放盈利。如果这件货物能再运达时间存放,并在指定时间取走的话,就能获得相应的盈利值。货物都是

逐个往上叠的,每个箱子上面的总重量不能大于箱子的承重。总的质量不能大于板的承重,货物上面还有货物的话是不

能被取走的。现在求最大的盈利值。

解题思路:dp好题,没想出来,看懂别人代码A掉的。

首先将货物按照运走时间早的,运进时间晚的排序,贪心的思想,越早处理掉越早把钱赚了。然后dp[i][j]表示说装入第i

个货物,并且当前重量为j的最大收益。

类似与逆思想的方式,从先移动出去的货物开始考虑,然后向后转移,因为会有说in3,in1,out1,in2,out2,out3这

样的情况,即货物1和货物2的重量是不需要叠加的,两个钱都赚的话也不会影响到货物3,所以f[i]数组用来维护说在i时

刻前已经移走的货物净赚最大值。在考虑第i个货物的时候,需要判断前面i-1个货物,只有在in_i ≤ in_j && out_j ≤ out_i

的时候,才能转移,转移的过程中一并维护f数组。

#include <cstdio>
#include <cstring>
#include <algorithm>using namespace std;const int maxn = 500;
struct Parcel {int in, out, w, s, v;void read() {scanf("%d%d%d%d%d", &in, &out, &w, &s, &v);}
}p[maxn];inline bool cmp (const Parcel& a, const Parcel& b) {return a.out < b.out || (a.out == b.out && a.in > b.in);
}int N, S, dp[maxn + 5][maxn * 2 + 5], f[maxn * 2 + 5];int main () {scanf("%d%d", &N, &S);p[0] = (Parcel){0, 2 * maxn, 0, S, 0};for (int i = 1; i <= N; i++)p[i].read();sort(p, p + N + 1, cmp);for (int i = 0; i <= N; i++) {for (int w = p[i].w; w <= S; w++) {int o = p[i].in;int wi = min(p[i].s, w - p[i].w);f[o] = 0;for (int j = 0; j < i; j++) if (p[j].in >= p[i].in) {while (o < p[j].out) {o++;f[o] = f[o-1];}f[o] = max(f[o], f[p[j].in] + dp[j][wi]);}dp[i][w] = f[o] + p[i].v;}}printf("%d\n", dp[N][S]);return 0;
}

Codeforces 480D Parcels(dp)相关推荐

  1. Codeforces 480D Parcels 动态规划

    题意 有n件物品,每件物品有一个接受时间,发送时间,重量,承重和价值.每个物品可以不接受,但接受了就必须在发送时间将其发送出去,才能获得其价值.有一个平台,承重为m,每次可以将一件物品放到当前最顶部物 ...

  2. Codeforces 833B 题解(DP+线段树)

    题面 传送门:http://codeforces.com/problemset/problem/833/B B. The Bakery time limit per test2.5 seconds m ...

  3. CodeForces 864E Fire dp递推

    CodeForces 864E 题意:有 n 个物品着火,每个物品要花 ti 时间扑灭,且在 >= di 时间后就会坏掉,物品价值为 pi . 问最多可以救回多少价值,物品个数,及救哪些物品(要 ...

  4. Codeforces 864E - Fire(dp)

    原题连接:http://codeforces.com/problemset/problem/864/E 题意:一个人想从大火中带走一些东西.每次他只能带一个,耗时ti ,价值为pi, 当总时间超过di ...

  5. CodeForces - 1497D Genius(dp)

    题目链接:点击查看 题目大意:给出 nnn 个问题,每个问题有如下属性: tagtagtag:标签 ccc:困难度 sss:奖励值 初始时 ci=2ic_i=2^ici​=2i,初始时 IQ=0IQ= ...

  6. D - Yet Another Problem On a Subsequence CodeForces - 1000D (DP,组合数学)

    D - Yet Another Problem On a Subsequence CodeForces - 1000D The sequence of integers a1,a2,-,aka1,a2 ...

  7. Codeforces 711c 简单dp

    题目:http://codeforces.com/problemset/problem/711/C 题意: 有n棵树,m(1-m)种颜色,要求划分成k组,每组是连续的同一种颜色的树. 刚开始树有的已经 ...

  8. 【CodeForces】【DP】14E Camels

    CodeForces 14E Camels 题目 ◇题目传送门◆ 题目大意 给定N,TN,TN,T要求求出满足下列条件的填数方案数. 1. 对于第j(2≤j≤N−1)j(2≤j≤N−1)j(2\le ...

  9. Codeforces 629C 简单DP

    [题目链接] http://codeforces.com/problemset/problem/629/C [解题报告] 比赛的时候跑去做D了,这道题只是简单看了看,赛后补题把它补掉.这个题目只要想通 ...

最新文章

  1. java 基于虹软离线人脸识别SDK 2.0 最新版
  2. Android2.3解析json出错
  3. QString和char *的相互转换
  4. [MVC]Controller
  5. Windows单机配置Zookeeper环境
  6. vlan 优科r500_ruckus 常用配置方法
  7. python实例31[自动挂载虚拟盘]
  8. asp.net 下利用DirectoryEntry验证用户及获取域控制器下的用户结构信息
  9. 服务器系统启用flash,基础设置:Windows Server 2012及2012R2 启用IE Flash
  10. b站java开发好的up主_B站有哪些不错的UP主?
  11. html平铺 拉伸 图片,[CSS]背景图片中平铺与拉伸
  12. 多边形的扫描转换算法 c语言,C++程序例题:多边形扫描转换算法
  13. C++PTA题解(1)——厘米换算英尺英寸
  14. 图文详解优麒麟系统安装教程(建议收藏)
  15. JS,等额本息,等额本金计算器
  16. 六位创业者分享内心最恐惧的事情
  17. 行业分析| 物流对讲
  18. 字符串String知识总结(上) 冲冲冲!!!
  19. java如何调用手机拍照功能_手把手教你如何实现拍照功能
  20. Kinect的三维重建

热门文章

  1. 基于FSR柔性薄膜压力传感器的智能鞋改装垫
  2. cesium 移除实体方法
  3. php方法帮助文档,Trace方法_帮助文档_Thinkphp手册
  4. luogu1359 租用游艇
  5. 关于pyecharts可视化中国经济、人口等数据
  6. Flowchart流程图示例
  7. 《通天秘笈》学习笔记
  8. 系统等保指的是信息系统的安全保护等级
  9. Linux 5300AGN网卡驱动,t400 wifi link 5100 AGN linux驱动安装
  10. comsumer配置