题意:给你n种方块, 每种方块有无限多种,要求当一个方快的的长宽都小于另一个方块是, 才能将此方块放在另一方块上, 求最大高度
分析:最长上升子序列的变形,每个方块有三种状态, 按照底面积大小排序
dp[i] : 第i个方块的最大高度
if(ok(i, j))
dp[i] = max(dp[j] + a[i].z)
#include
#include
#include
using namespace std;
struct node {
int x, y, z;
}a[100];
int x, y, z, n, ca = 1;
int dp[100];
bool cmp(node a, node b) {
return a.x*a.y > b.x*b.y;
}
bool ok(int i, int j) {
if(a[i].x