• JZ初中OJ 2000. [2015.8.6普及组模拟赛] Leo搭积木


    题目描述

             Leo是一个快乐的火星人,总是能和地球上的OIers玩得很high。
             2012到了,Leo又被召回火星了,在火星上没人陪他玩了,但是他有好多好多积木,于是他开始搭积木玩。
           火星人能制造n种积木,积木能无限供应。每种积木都是长方体,第i种积木的长、宽、高分别为li、wi、hi。积木可以旋转,使得长宽高任意变换。Leo想要用这些积木搭一个最高的塔。问题是,如果要把一个积木放在另一个积木上面,必须保证上面积木的长和宽都严格小于下面积木的长和宽。这意味着,即使两块长宽相同的积木也不能堆起来。
           火星上没有电脑,好心的你决定帮助Leo求出最高的塔的高度。

    【提示】
    每种积木都可以拆分成高度分别为li、wi、hi的三种积木,另两边作为长和宽,保证长>=宽。
     

    输入

    第一行,一个整数n,表示积木的种数
    接下来n行,每行3个整数li,wi,hi,表示积木的长宽高

    输出

    一行一个整数,表示塔高的最大值
     

    样例输入

    Sample Input1:
    1
    10 20 30


    Sample Input2:
    2
    6 8 10
    5 5 5



    Sample Input3:
    5
    31 41 59
    26 53 58
    97 93 23
    84 62 64
    33 83 27

     

    样例输出

    Sample Output1:
    40


    Sample Output2:
    21


    Sample Output3:
    342
     

    数据范围限制

    对于30%的数据 n<=8
    对于100%的数据 n<=3000,最后答案不会超过32位整型
     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 struct Node{
     4     int w,l,h;
     5 }a[10001];
     6 bool bdx(Node c,Node d)
     7 {
     8     return c.l<d.l;
     9 }
    10 int main()
    11 {
    12     freopen("brick.in","r",stdin);
    13     freopen("brick.out","w",stdout);
    14     int n,f[10001],ans;
    15     cin>>n;
    16     int o,p,q;
    17     for(int i=1;i<=n;i++)
    18     {
    19         cin>>o>>p>>q;
    20         a[i].l=max(o,p);a[i].w=min(o,p);a[i].h=q;
    21         a[i+n].l=max(o,q);a[i+n].w=min(o,q);a[i+n].h=p;
    22         a[i+2*n].l=max(p,q);a[i+2*n].w=min(p,q);a[i+2*n].h=o;
    23     }
    24     sort(a+1,a+3*n+1,bdx);
    25     for(int i=1;i<=3*n;i++)
    26         f[i]=a[i].h;
    27     for(register int i=3*n;i>=1;i--)
    28         for(register int j=i+1;j<=3*n;j++)
    29             if(a[i].w<a[j].w && a[i].l != a[j].l)
    30                 f[i]=max(f[j]+a[i].h,f[i]);
    31     for(int i=1;i<=3*n;i++)
    32     ans=max(ans,f[i]);
    33     cout<<ans;
    34 }
  • 相关阅读:
    三:oracle练习
    二:SQL 函数
    一:SQL基本语法
    生产者与消费者模式(理解) 进程间通信之消息队列编程
    C语言
    前端面试:基础javascript篇(二)
    Koa入门和源码分析
    前端面试:基础javascript篇(一)
    前端面试题(二)
    C复习
  • 原文地址:https://www.cnblogs.com/dsanying/p/11305439.html
Copyright © 2020-2023  润新知