[背包DP]Space Elevator 太空电梯

  • 题面
    • 题目描述
    • 输入
    • 输出
    • 样例
  • 解析
  • 代码

题面

题目描述

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

输入

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

输出

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

样例

样例输入

3
7 40 3
5 23 8
2 52 6

样例输出

48

提示
对于 100 % 100\% 100% 的数据: 1 ≤ K ≤ 400 1\le K\le 400 1≤K≤400, 1 ≤ h i ≤ 100 1\le h_i \le 100 1≤hi​≤100, 1 ≤ c i ≤ 10 1\le c_i\le 10 1≤ci​≤10, 1 ≤ a i ≤ 4 × 1 0 4 1\le a_i\le 4\times10^4 1≤ai​≤4×104

解析

易得:
F i = { 1 ( i = 0 ) max ⁡ j = 1 N F i − h j ( i ≠ 0 ) F_i=\left\{ \begin{aligned} &1&(i=0) \\ &\max_{j=1}^{N}{F_{i-h_j}}&(i\not=0)\\ \end{aligned} \right. Fi​=⎩⎨⎧​​1j=1maxN​Fi−hj​​​(i=0)(i​=0)​
但是很容易发现是错的
因为我们并没有考虑 c i c_i ci​
但是考虑后仍是错的,例如下面:

2
1 51 1
50 50 1

我们会将第一块放入,但显然先放第2块跟优
所以先排序:

struct Box{int h,a,c;}box[439];
bool cmp(Box x,Box y){return (x.a==y.a)?x.h>y.h:x.a<y.a;}

代码

#include<bits/stdc++.h>
using namespace std;
int N,ans;
struct Box{int h,c,a;}box[439];
bool cmp(Box x,Box y){return (x.a==y.a)?x.h>y.h:x.a<y.a;}
int f[439][40039];
int main(){scanf("%d",&N);for(int i=1;i<=N;i++){scanf("%d%d%d",&box[i].h,&box[i].a,&box[i].c);}sort(box+1,box+1+N,cmp);f[0][0]=1;for(int i=1;i<=N;i++){for(int j=0;j<=box[i].a;j++){for(int k=0;k<=box[i].c;k++){if(f[i-1][j]&&j+k*box[i].h<=box[i].a){f[i][j+k*box[i].h]=1;ans=max(ans,j+k*box[i].h);}}}}printf("%d",ans);
}

[背包DP]Space Elevator 太空电梯相关推荐

  1. P6771 [USACO05MAR]Space Elevator 太空电梯-贪心与DP

    题目链接[USACO05MAR]Space Elevator 太空电梯 - 洛谷 题目描述 奶牛们要去太空了!它们打算用方块建造一座太空电梯.现在它们有 NN 种方块,第 ii 种方块有一个特定的高度 ...

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

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

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

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

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

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

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

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

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

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

  7. 洛谷P6771 Space Elevator 太空电梯

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

  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. Exchange与ADFS单点登录 PART 2:部署和配置ADFS
  2. Linux内核源代码分析-第三章 内核体系结构概述-1
  3. IIS6.0支持PHP设置
  4. git 添加用户名和邮箱_设置 Git 账户及邮箱
  5. s11.9 sar:收集系统信息
  6. 【数据结构与算法】中缀表达式 - 后缀表达式 - 求值
  7. 好用的平板电脑_支架里的变形金刚让手机、电脑、平板更好用!6种角度,1秒切换...
  8. UI标签库专题七:JEECG智能开发平台 ComboBox (下拉选择框)
  9. 交叉编译和使用HTOP
  10. android控件触摸事件传递,Android事件传递处理
  11. (转)李嘉诚:成功源于花90%时间考虑失败
  12. 管家婆显示服务器没有加密狗,管家婆软件阿拉丁狗找不到加密狗
  13. 群晖修改ipv6dns服务器,hiboy大佬的padavan开启IPv6,并使用IPv6登录黑群晖的方法
  14. word转pdf转换器免费版是一款专业将word文档转换成pdf文件的软件,完美支持在线word转换成pdf,可将office word文档doc、docx、wps格式转换成PDF格式。word转pd
  15. 【Android 安装包优化】Android 中使用 SVG 图片 ( 批量转换 SVG 格式图片为 Vector Asset 矢量图资源 )
  16. openCV 简单实现身高测量(二)
  17. gopher攻击mysql_从一道CTF题目看Gopher攻击MySql
  18. (77)--用框架爬取博客园信息并保存到数据库
  19. mac系统连接服务器教程视频教程,mac os教程视频
  20. 全球及中国面膜行业消费格局与十四五趋势分析报告2022年

热门文章

  1. remote: Incorrect username or password ( access token ) fatal: Authenticatio
  2. 条件判断语句之if语句
  3. css 图片使用过滤器
  4. 目标跟踪算法——KCF入门详解
  5. 1219 spring3 项目总结
  6. usb host 驱动之 urb
  7. LED晶片自动分选机设计
  8. appscan尝鲜使用
  9. 虚拟机linux安装zookeeper
  10. numpy 花哨的索引、排序和结构化数据