UVa 407
此问题与求上升序列最大和类似,可以作为DAG模型计算。将每一快砖分解为3块,将所有砖块按照底排序,注意sort排序中涉及到底的两个参数x,y,这时候一定要有优先排,比如先排x再排y,不能同时排x和y,下面排序写法是错误的:
bool operator<(Rec a){
return x<a.x&&y<a.y;
}
/*----UVa437
--首先将每一个长方体按照三个方向,分解为3个长方体
--用dp[i]表示以第i个长方体为底所得到的最大高度
--问题其实和hdu1087一样
*/
#define _CRT_SECURE_NO_DEPRECATE
#include<iostream>
#include<vector>
#include<string.h>
#include<algorithm>
using namespace std;
const int MAXN = 100;
struct Rec{
int x, y,h;
Rec(int a=0,int b=0,int c=0) :x(a), y(b), h(c){}
bool operator<( Rec a){
//一定要有优先比较顺序,先按照x再按照y
if (x == a.x)
return y < a.y;
return x < a.x;
}
};
Rec rec[MAXN];
int dp[MAXN];
int n;
/*vector<int>vec[MAXN];
int dfs(int i){
int &ans = dp[i];
if (ans >= 0)
return ans;
ans = rec[i].h;
for (int j = 0; j < (int)vec[i].size(); j++)
ans = max(ans, dfs(vec[i][j]) + rec[i].h);
return ans;
}*/
int main(){
int i,j,iCase=1;
int a[3];
while (scanf("%d", &n) && n){
int cnt =1;
for (i = 0; i < n; i++){
scanf("%d%d%d", &a[0], &a[1], &a[2]);
sort(a, a + 3);
rec[cnt++] = Rec(a[0],a[1],a[2]);
rec[cnt++] = Rec(a[1],a[2],a[0]);
rec[cnt++] = Rec(a[0],a[2],a[1]);
}
n = cnt;
sort(rec, rec + n);
int ans = 0;
for (i = 1; i < n; i++){
dp[i] = rec[i].h;
for (j = 1; j < i; j++){
if (rec[j].x < rec[i].x&&rec[j].y < rec[i].y)
dp[i] = max(dp[i], dp[j] + rec[i].h);
}
ans = max(ans, dp[i]);
}
/*for (i = 0; i < n; i++){
vec[i].clear();
for (j = 0; j < n; j++){
if (rec[j] < rec[i])
vec[i].push_back(j);
}
}
int ans = 0;
memset(dp, -1, sizeof(dp));
for (i = 1; i <n; i++){
dp[i] = dfs(i);
ans = max(ans, dp[i]);
}*/
printf("Case %d: maximum height = %d\n",iCase++,ans);
}
return 0;
}
UVa 407的更多相关文章
- 【转】UVa Problem 100 The 3n+1 problem (3n+1 问题)——(离线计算)
// The 3n+1 problem (3n+1 问题) // PC/UVa IDs: 110101/100, Popularity: A, Success rate: low Level: 1 / ...
- UVa 10012 - How Big Is It? 堆球问题 全排列+坐标模拟 数据
题意:给出几个圆的半径,贴着底下排放在一个长方形里面,求出如何摆放能使长方形底下长度最短. 由于球的个数不会超过8, 所以用全排列一个一个计算底下的长度,然后记录最短就行了. 全排列用next_per ...
- Fast Matrix Operations(UVA)11992
UVA 11992 - Fast Matrix Operations 给定一个r*c(r<=20,r*c<=1e6)的矩阵,其元素都是0,现在对其子矩阵进行操作. 1 x1 y1 x2 y ...
- uva 1354 Mobile Computing ——yhx
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAABGcAAANuCAYAAAC7f2QuAAAgAElEQVR4nOy9XUhjWbo3vu72RRgkF5
- UVA 10564 Paths through the Hourglass[DP 打印]
UVA - 10564 Paths through the Hourglass 题意: 要求从第一层走到最下面一层,只能往左下或右下走 问有多少条路径之和刚好等于S? 如果有的话,输出字典序最小的路径 ...
- UVA 11404 Palindromic Subsequence[DP LCS 打印]
UVA - 11404 Palindromic Subsequence 题意:一个字符串,删去0个或多个字符,输出字典序最小且最长的回文字符串 不要求路径区间DP都可以做 然而要字典序最小 倒过来求L ...
- UVA&&POJ离散概率与数学期望入门练习[4]
POJ3869 Headshot 题意:给出左轮手枪的子弹序列,打了一枪没子弹,要使下一枪也没子弹概率最大应该rotate还是shoot 条件概率,|00|/(|00|+|01|)和|0|/n谁大的问 ...
- UVA计数方法练习[3]
UVA - 11538 Chess Queen 题意:n*m放置两个互相攻击的后的方案数 分开讨论行 列 两条对角线 一个求和式 可以化简后计算 // // main.cpp // uva11538 ...
- UVA数学入门训练Round1[6]
UVA - 11388 GCD LCM 题意:输入g和l,找到a和b,gcd(a,b)=g,lacm(a,b)=l,a<b且a最小 g不能整除l时无解,否则一定g,l最小 #include &l ...
随机推荐
- [poj] 1375 Interval || 圆的切线&和直线的交点
原题 每组数据给出一些圆(障碍物)的圆心和半径,一个点和一条线段,求站在这个点,能开到的线段的部分的左端点和右端点.没有则输出"No View" 相当于求过该点的圆的两条切线,切线 ...
- BZOJ3609 [Heoi2014]人人尽说江南好 【博弈】
题目链接 BZOJ3609 题解 我们假设最后合成若干个\(m\),和\(n \mod m\),此时合成次数是最多的,也唯一确定胜利者 可以发现,在轮流操作的情况下,胜利者一定可以将终态变为这个状态 ...
- idiots
idiots 题目描述 给定 $n$ 个长度分别为 $a_i$ 的木棒,问随机选择 $3$ 个木棒能够拼成三角形的概率. 输入格式 第一行一个正整数 nn. 第二行 nn 个正整数,第 ii 个数表示 ...
- 使用redis实现简单的锁机制
在测试第三方账号注册时,授权拉取后,如果两台手册同时点击注册按钮,数据库中就会新增两天一模一样的数据,而我们的需求是一个第三方账号只能绑定一个账号,所以,由此现象可以知道,这里产生了并发访问,我们应该 ...
- Nodejs 基础知识 浅析
1. 模块化 ①常用模块化规范 CommonJS + nodejs AMD(Asynchronous Module Definition) + RequireJS CMD(Common Module ...
- 控制属性为multiple的select
需求:实现点击查询,搜索对应渠道已投放.未投放批次.如图: html: <div class="form-inline margin-top-20"> <div ...
- 50 days before NOI2017
2017.5.31 今天开了这个博客,打算每天来写点东西,嗯...毕竟要NOI了嘛... 第一天跑到常州里集训,打开题目一看湖南集训题... T1刷一下写完,然后交了然后发现错了...赶紧改过来,大概 ...
- UVALIVE 2927 "Shortest" pair of paths
裸的费用流.一开始因为这句话还觉得要拆点 样例行不通不知道这句话干啥用的.Further, the company cannot place the two chemicals in same dep ...
- grep and regular expression --- ^ . *
"^" : Start of Line anchor "." : Matches any single character except the newline ...
- Linux文件查找命令find,xargs详述【转】
转自:http://blog.csdn.net/cxylaf/article/details/4069595 转自http://www.linuxsir.org/main/?q=node/137 Li ...