题目链接[USACO05MAR]Space Elevator 太空电梯 - 洛谷

题目描述

奶牛们要去太空了!它们打算用方块建造一座太空电梯。现在它们有 NN 种方块,第 ii 种方块有一个特定的高度 h_ihi​,一定的数量 c_ici​。为了防止宇宙射线破坏方块,第 ii 种方块的任何部分不能超过高度 a_iai​。
请用这些方块堆出最高的太空电梯。

输入格式

第一行,一个整数 NN;
第二行到 N+1N+1 行,第 i+1i+1 行三个整数 h_i,a_i,c_ihi​,ai​,ci​,数字之间用空格分隔。

输出格式

共一行,一个整数,为太空电梯的高度。

输入输出样例

输入 #1复制

3
7 40 3
5 23 8
2 52 6

输出 #1复制

48

说明/提示

对于 100\%100% 的数据:1\le N\le 4001≤N≤400,1\le h_i \le 1001≤hi​≤100,1\le c_i\le 101≤ci​≤10,1\le a_i\le 4\times 10^41≤ai​≤4×104。

---------------------------------------------------------------------------------------------------------------------------------

”第 ii 种方块的任何部分不能超过高度 a_iai​。“题目翻译有些歧义,比较难懂,其实就是我们在倒序枚举体积的时候,当体积大于ai时我们不能再加上这一物体。

我们知道,常规的多重背包时,无论先加哪一个物体,都是没有区别的。但本题我们倒序枚举时,有了新的上界。加入我们前一个的上界比当前要高,比当前高出的部分上界,我们无法加入当前物体,但这些部分可能受比它们体积更小的一部分的影响;

举例子,体积100与体积5的两个物品,在普通多重背包情况下,前后顺序没有区别;

但当100的限制是105 5的限制是10时,我们先放100的,在放5的,最终我们得到的答案是100,而非105;当没有上界限制时,先放100,再放5的时候,我们能够遍历到105的体积,并且加上5,但由于上界限制,我们必须把小的上界尽可能放在前面,这样后面大的上届才能以此为依据做更优的转移

#include<iostream>
#include<stack>
#include<string>
# include<cstring>
# include<algorithm>
using namespace std;
typedef long long int ll;typedef struct
{int v,cnt,up;}lift;
lift s[100000+10];bool cmp(lift a,lift b)
{return a.up<b.up;}
int  dp[40000*400+10];int main ()
{int n;cin>>n;for(int i=1;i<=n;i++){cin>>s[i].v>>s[i].up>>s[i].cnt;}sort(s+1,s+1+n,cmp);dp[0]=1;for(int i=1;i<=n;i++){for(int j=s[i].up;j>=s[i].v;j--){for(int k=0;k<=s[i].cnt&&k*s[i].v<=j;k++){dp[j]|=dp[j-s[i].v*k];}}}for(int i=40000*400;i>=1;i--){if(dp[i]){cout<<i;return 0;}}return 0;
}

P6771 [USACO05MAR]Space Elevator 太空电梯-贪心与DP相关推荐

  1. P6771 [USACO05MAR]Space Elevator 太空电梯 题解

    [USACO05MAR]Space Elevator 太空电梯 description: 奶牛们要去太空了!它们打算用方块建造一座太空电梯.现在它们有 种方块,第 种方块有一个特定的高度 ,一定的数量 ...

  2. 洛谷P6771 [USACO05MAR]Space Elevator 太空电梯

    题目描述 奶牛们要去太空了!它们打算用方块建造一座太空电梯.现在它们有 N种方块,第 i种方块有一个特定的高度 h[i]​,一定的数量 c[i]​.为了防止宇宙射线破坏方块,第 i种方块的任何部分不能 ...

  3. Java解洛谷P6771 [USACO05MAR]Space Elevator 太空电梯,包含完整的多重背包状态转移方程,大量注释,通俗易懂

    01.题目及链接 题目链接:https://www.luogu.com.cn/problem/P6771 02.多重背包状态转移方程说明 了解多重背包 有 N 种物品和一个容量是 V 的背包,每种物品 ...

  4. [背包DP]Space Elevator 太空电梯

    [背包DP]Space Elevator 太空电梯 题面 题目描述 输入 输出 样例 解析 代码 题面 题目描述 奶牛们要去太空了!它们打算用方块建造一座太空电梯.现在它们有 NN 种方块,第 ii ...

  5. 洛谷P6771 Space Elevator 太空电梯

    题目描述 奶牛们要去太空了!它们打算用方块建造一座太空电梯.现在它们有 NN 种方块,第 ii 种方块有一个特定的高度 h_ihi​,一定的数量 c_ici​.为了防止宇宙射线的破坏方块,第 ii 种 ...

  6. 【洛谷】P6771 Space Elevator 太空电梯***(多重背包)

    穿越隧道 没有理清所限制的高度之间的关系. 需要反复理解. #include <bits/stdc++.h> using namespace std; const int N = 1e3 ...

  7. Space Elevator 太空电梯(洛谷)

    题目描述 奶牛们要去太空了!它们打算用方块建造一座太空电梯. 现在它们有 N 种方块,第 i 种方块有一个特定的高度 hi,一定的数量 ci . 为了防止宇宙射线的破坏方块,第 i 种方块的任何部分不 ...

  8. BZOJ1739: [Usaco2005 mar]Space Elevator 太空电梯

    n<=400个东西,每个东西有高度<=100,这种东西在堆放过程中不得超过的最大高度<=40000,以及每个东西的个数<=10,求最高能堆多高. 算了下背包复杂度不太对然后开了 ...

  9. 【POJ - 2392】Space Elevator (dp,优秀的背包问题)

    题干: The cows are going to space! They plan to achieve orbit by building a sort of space elevator: a ...

最新文章

  1. MySQL数据库时间类型datetime、bigint、timestamp的查询效率比较
  2. 科普丨让机器看见世界,这背后的技术是什么?
  3. 在当前PJ项目pj_nath模块加入mysql的一些问题
  4. VTK:Utilities之PiecewiseFunction
  5. 剖析Picasso中的内存缓存机制——LruCache
  6. nginx 压缩和缓存设置
  7. linux下ftp服务阶段实验(3)
  8. CISCO ACL配置全解
  9. [js] Number()的存储空间是多大?假如接口返回一个超过最大字节的数字怎么办?
  10. WEB编程学习之Windows安装运行Tomcat
  11. mysql语言的创建模式文件_南开17春学期《数据库应用系统设计》在线作业 免费答案...
  12. Codeforces 解题报告索引
  13. 基于Quartus II+ModelSim SE的后仿真(Verilog版)
  14. 洪恩在线c语言测试,洪恩软件之编程之道C/C++程序设计入门视频教程
  15. 安装增强功能时,未能加载虚拟光盘 D:\VirtualBox\VBoxGuestAdditions.iso到虚拟电脑
  16. 【路径规划】局部路径规划算法——B样条曲线法(含python实现)
  17. python实现txt合并
  18. 2020CCPC长春站第一场区域赛打铁记
  19. Matlab 之meshgrid interp griddata interp2
  20. abap后台作业清理

热门文章

  1. 你所知道的流量计工作原理在这里!
  2. C语言贪吃蛇最短路径,AI贪吃蛇前瞻——基于Dijkstra算法的最短路径问题
  3. c++ string类深拷贝其他版本(简洁版,引用计数版,写时拷贝版)
  4. JavaScript——关于JavaScript、在HTML中嵌入JS代码的三种方式、变量
  5. 【JavaScript】bind函数是怎么实现的 手动实现bind函数
  6. 实时流处理Storm、Spark Streaming、Samza、Flink孰优孰劣
  7. 《机械设计基础》在线平时作业1
  8. 十进制数与N进制数据的转换
  9. c语言线性代数方程组求解编程,计算机编程c语言求解线性代数方程组
  10. Java反射机制(详解如何使用反射)