• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
LyonLys
愿意在角落唱沙哑的歌 再大声也都是给你 请用心听 不要说话 Contact me via E-mail: lyon.lys@gmail.com
博客园    首页    新随笔    联系   管理    订阅  订阅

hdu 1069 Monkey and Banana (LIS)

Problem - 1069

  随便找到的一道题目。

  题意是给出一些的长方体,长方体可以用任意次数,可以任意翻转。如果一个长方体可以叠在另一个长方体上,条件是这个长方体的长和宽严格小于另一个长方体的长和宽。问给出的n种长方体最高可以叠到多高。

  因为长方体有三种不同的面,而且长方体的长和宽要严格小于前一个,所以可以将一个长方体拆成三种不同的面作为底面的长方体,而且假设长总是大于宽的。将长方体按照长和宽排序,然后假设len[i]是放置第i个长方体的时候能得到的最大高度,之后的做法基本上跟LIS的操作一样了。

 代码如下:

 1 #include <cstdio>
 2 #include <iostream>
 3 #include <algorithm>
 4 
 5 using namespace std;
 6 
 7 struct Node {
 8     int l[3];
 9 } rec[111];
10 
11 bool cmp(Node a, Node b) {
12     if (a.l[1] != b.l[1]) return a.l[1] < b.l[1];
13     return a.l[2] < b.l[2];
14 }
15 
16 int len[111];
17 
18 int main() {
19 //    freopen("in", "r", stdin);
20     int n, cas = 1;
21     while (cin >> n && n) {
22         for (int i = 0; i < n; i++) {
23             for (int j = 0; j < 3; j++) {
24                 cin >> rec[i * 3].l[j];
25             }
26             sort(rec[i * 3].l, rec[i * 3].l + 3);
27             for (int j = 1; j <= 2; j++) {
28                 rec[i * 3 + j] = rec[i * 3];
29                 swap(rec[i * 3 + j].l[0], rec[i * 3 + j].l[1]);
30             }
31             swap(rec[i * 3 + 2].l[0], rec[i * 3 + 2].l[2]);
32         }
33         n *= 3;
34         int mx = 0;
35         sort(rec, rec + n, cmp);
36         for (int i = 0; i < n; i++) {
37             len[i] = 0;
38             for (int j = 0; j < i; j++) {
39                 if (rec[j].l[1] < rec[i].l[1] && rec[j].l[2] < rec[i].l[2]) {
40                     len[i] = max(len[j], len[i]);
41                 }
42             }
43             len[i] += rec[i].l[0];
44             mx = max(mx, len[i]);
45         }
46         printf("Case %d: maximum height = %d\n", cas++, mx);
47     }
48     return 0;
49 }
View Code

 

——written by Lyon

posted @ 2013-05-25 00:11  LyonLys  阅读(195)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3