博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UVA 437 巴比伦塔 【DAG上DP/LIS变形】
阅读量:5282 次
发布时间:2019-06-14

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

【链接】:https://cn.vjudge.net/problem/UVA-437

【题意】:

给你n个立方体,让你以长宽为底,一个个搭起来(下面的立方体的长和宽必须大于上面的长和宽)求能得到的最长高,立方体能翻来覆去交换长宽高来用。 

【代码】:

#include
using namespace std;const int INF = 1e6;const int N = 50010;int n,m,T,c,ca;struct node{ int x, y, z;}a[N];int d[N];bool cmp(node a,node b){ return a.x*a.y < b.x*b.y; //按底面积排序}void dp(){ int Max = 0; for(int i=1; i<=c; i++){ d[i] = a[i].z; //初始化位置 for(int j=1; j
a[j].x && a[i].y > a[j].y) d[i] = max(d[i], d[j] + a[i].z); //LIS变形 } Max = max(Max,d[i]); } printf("Case %d: maximum height = %d\n", ++ca, Max);}int main(){ while(cin >> n, n) { int x,y,z; c = 0; memset(a,0,sizeof(a)); memset(d,0,sizeof(d)); for(int i=1;i<=n;i++){ cin>>x>>y>>z;    //结构体数组压入6种情况下的长宽高 a[++c]=(node){x,y,z}; a[++c]=(node){y,x,z}; a[++c]=(node){z,x,y}; a[++c]=(node){x,z,y}; a[++c]=(node){y,z,x}; a[++c]=(node){z,y,x}; } sort(a+1, a+c+1, cmp); dp(); }}

 

转载于:https://www.cnblogs.com/Roni-i/p/9011978.html

你可能感兴趣的文章
INSERT IGNORE INTO / REPLACE INTO
查看>>
Python数据类型-布尔/数字/字符串/列表/元组/字典/集合
查看>>
MFC中theApp
查看>>
类的无参方法
查看>>
Python 开发:初识Python(记笔记)
查看>>
sqlrelay 的安装配置和应用
查看>>
【刷题】SPOJ 705 SUBST1 - New Distinct Substrings
查看>>
IEEE 754浮点数表示标准
查看>>
WebService客户端几种实现方式
查看>>
Lua1.1 Lua 的参考手册 (二)
查看>>
linux下mysql的root密码忘记解决方
查看>>
javascript学习笔记 - 引用类型 单体内置对象
查看>>
LeetCode-Pascal's Triangle II-帕斯卡三角-DP
查看>>
boot空间不足
查看>>
第五周学习进度条
查看>>
提出的问题
查看>>
使用kdesvn提交文件出现Aborting commit:'.lcd1602.ko.cmd' remains in conflict错误提示
查看>>
解决Jenkins无法编译Egret5.0项目的问题
查看>>
declare 结构用来设定一段代码的执行指令
查看>>
Hadoop学习笔记三:分布式hadoop部署
查看>>