博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JZOJ 1286. 太空电梯
阅读量:4942 次
发布时间:2019-06-11

本文共 1119 字,大约阅读时间需要 3 分钟。

题目

Description

  奶牛们想用K(1<=K<=400)中石块制造一个太空电梯去太空旅行,每种石块有自己的高度h_i(1<=h_i<=100)和数量c_i(1<=c_i<=10),为了避免宇宙射线的干扰,每种石块不能超过最高可以达到的高度a_i(1<=a_i<=40000)。
  帮助奶牛用石块堆积一个最高的太空电梯。
 

Input

  第1行:一个整数K
  第2到K+1行:每行3个用空格隔开的整数h_i,a_i,c_i

Output

  输出一个高度H,表示最大高度。
 

Sample Input

37 40 35 23 82 52 6

Sample Output

48
 

Data Constraint

 
 

Hint

【样例说明】
  从上到下依次是6个3号石块、3个1号石块和3个2号石块,注意放4个2号石块在3个1号石块的下面是不行的,因为1号石块最高不能超过40,而现在最上面的1号石块高度达到41,所以不行。

 

分析

显然可设f[i]f[i] 表示是否可以到达高度i
每次枚举高度,看当前的点是否可以到达这个高度就可以了
f[0] = 1

 

代码

1 #include
2 #include
3 using namespace std; 4 struct sb 5 { 6 int val,he,c; 7 }a[1000010]; 8 int f[1000010]; 9 bool cmp(sb a,sb b){
return a.he
>n;14 for (int i=1;i<=n;i++)15 cin>>a[i].val>>a[i].he>>a[i].c;16 sort(a+1,a+1+n,cmp);17 f[0]=1;18 for (int i=1;i<=n;i++)19 for (int k=a[i].he;k>=0;k--)20 for (int j=1;j<=a[i].c&&k+a[i].val*j<=a[i].he&&f[k]==1;j++)21 f[k+j*a[i].val]=1;22 for (int i=a[n].he;i>=1;i--) 23 {24 if (f[i]) {25 cout<

 

转载于:https://www.cnblogs.com/zjzjzj/p/10698983.html

你可能感兴趣的文章
[国家集训队]小Z的袜子 | 普通莫队
查看>>
企业信息系统——SCM
查看>>
ESXI6.0 时间(时区)显示不一致
查看>>
流程控制 while循环 运算符
查看>>
go时间和日期
查看>>
Collection中的List,Set的toString()方法
查看>>
mysql中You can’t specify target table for update in FROM clause错误解决方法
查看>>
Iterator --迭代器
查看>>
根据两点的经纬度计算两地距离
查看>>
向webabcd先生致敬!
查看>>
拉格朗日乘子法与KKT条件 && SVM中为什么要用对偶问题
查看>>
【转】好的用户界面-界面设计的一些技巧
查看>>
IDEA+Tomcat热部署自动编译
查看>>
Xcode里-ObjC, -all_load, -force_load
查看>>
Block的引用循环问题 (ARC & non-ARC)
查看>>
详解Ubuntu16.04安装Python3.7及其pip3并切换为默认版本(转)
查看>>
POJ 2777 Count Color
查看>>
51nod 1135 原根
查看>>
HTML5在客户端存储数据的新方法——localStorage
查看>>
HTML5中的Web Notification桌面通知(右下角提示)
查看>>