HDU-1069-Monkey and Banana

news/2024/7/1 23:18:52

链接:https://vjudge.net/problem/HDU-1069#author=prayerhgq

题意:

一组研究人员正在设计一项实验,以测试猴子的智商。他们将挂香蕉在建筑物的屋顶,同时,提供一些砖块给这些猴子。如果猴子足够聪明,它应当能够通过合理的放置一些砖块建立一个塔,并爬上去吃他们最喜欢的香蕉。
 
研究人员有n种类型的砖块,每种类型的砖块都有无限个。第i块砖块的长宽高分别用xi,yi,zi来表示。 同时,由于砖块是可以旋转的,每个砖块的3条边可以组成6种不同的长宽高。
 
在构建塔时,当且仅当A砖块的长和宽都分别小于B砖块的长和宽时,A砖块才能放到B砖块的上面,因为必须留有一些空间让猴子来踩。
 
你的任务是编写一个程序,计算猴子们最高可以堆出的砖块们的高度。

思路:

结构体记录每三个数可以形成的砖块,以长宽排序,从小到大遍历,将每个砖块上面能垒上去的高度叠加。

因为从小往大,之前的砖块都是能垒的最大高度。

代码:

#include <iostream>
#include <memory.h>
#include <string>
#include <istream>
#include <sstream>
#include <vector>
#include <stack>
#include <algorithm>
#include <map>
#include <queue>
#include <math.h>
#include <cstdio>
using namespace std;

typedef long long LL;

const int MAXN = 30 * 6 + 10;
const int INF = 0x7fffffff;

struct Node
{
    int _x, _y;
    int _h;
    bool operator < (const Node & that) const {
        if (this->_x != that._x)
            return this->_x < that._x;
        return this->_y < that._y;
    }
}node[MAXN];

int main()
{
    int n;
    int a, b, c;
    int cnt = 1;
    while (cin >> n && n)
    {
        int pos = 0;
        for (int i = 1;i <= n;i++)
        {
            cin >> a >> b >> c;
            pos++, node[pos]._x = a, node[pos]._y = b, node[pos]._h = c;
            pos++, node[pos]._x = a, node[pos]._y = c, node[pos]._h = b;
            pos++, node[pos]._x = b, node[pos]._y = a, node[pos]._h = c;
            pos++, node[pos]._x = b, node[pos]._y = c, node[pos]._h = a;
            pos++, node[pos]._x = c, node[pos]._y = a, node[pos]._h = b;
            pos++, node[pos]._x = c, node[pos]._y = b, node[pos]._h = a;
        }
        sort(node + 1, node + 1 + pos);

        int res = node[1]._h;
        for (int i = 1;i <= pos;i++)
        {
            int tmp = 0;
            for (int j = 1;j < i;j++)
            {
                if (node[j]._x < node[i]._x && node[j]._y < node[i]._y)
                    tmp = max(tmp, node[j]._h);
            }
            node[i]._h += tmp;
            res = max(res, node[i]._h);
        }
        printf("Case %d: maximum height = %d\n", cnt++, res);
    }



    return 0;
}

  

转载于:https://www.cnblogs.com/YDDDD/p/10354927.html


http://www.niftyadmin.cn/n/3032414.html

相关文章

长连接与短连接——JDK的HttpClient、ApacheHttpClient及OkHttpClient类比——Feign产品优化

目录 O、长连接与短链接 dubbo用长连接。 一、JDK的HttpClient 1.1、是否缓存复用是动态处理的&#xff1a; 1.2、HttpURLConnection、HttpClient、KeepAliveCache三个类的简单关系为&#xff1a; 1.3、链接缓存&#xff1a;继承自HashMap的实现。map的key也是特殊定义的…

wince 串口调试信息输出

不管在WinCE5.0还是在WinCE6.0中&#xff0c;我们在调试驱动或者应用的时候都会用到打印函数。在驱动里面&#xff0c;我们可能会用DEBUGMSG(..)&#xff0c;RETAILMSG(..)&#xff0c;还有NKDbgPrintfW(..)。在我们使用这些打印函数调试我们的程序之前&#xff0c;我们需要实现…

5. 内部类

内部类 在外部类中&#xff0c;内部类定义位置与外部类成员所处的位置相同&#xff0c;因此称为成员内部类。 1、实例内部类 即未被static修饰的成员内部类。 //外部类 class OuterClass {public int data1 1;private int data2 2;public static int data3 3;public Ou…

@Bean 注解

Configuration 以及其中的 Bean 注解 Configuration 注解: Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Documented Component public interface Configuration {String value() default ""; } 从定义来看, Configuration 注解是用 Component 注解…

poj 3613(最短路)

题意&#xff1a;求解经过不多于某边数的最短路 思路&#xff1a;矩阵连乘&#xff0c;乘的次数就是不多于某边数的最短路&#xff0c;题目给出的顶点需要映射处理 View Code 1 #include<iostream>2 #include<map>3 #include<stdio.h>4 #include<string.…

Netty——BIO,NIO,AIO精讲

目录 0、总结&#xff1a; 一、BIO(Blocking IO) 同步阻塞模型&#xff0c; 二、NIO(Non Blocking IO) 同步非阻塞 三、AIO(NIO 2.0) 异步非阻塞 BIO、 NIO、 AIO 对比&#xff1a; 0、总结&#xff1a; 1、BIO(Blocking IO)同步阻塞模型&#xff0c;一个客户端连接对应一个处理…

6. 抽象类和接口

1. 抽象类 当我们的方法没有具体的实现,那么这个时候我们可以将这个方法定义为抽象方法,把定义这个方法的类定义为抽象类. //抽象类 public abstract class Shape {public int a;public static int b ;public void func() {}//抽象方法abstract public void draw();}使用 abs…

jsp到servletURL编码问题

在servlet中获取的jsp表单内容 java.net.URLDecoder.decode(body,"UTF-8");用这个方法进行编码就能获取到中文字符了.转载于:https://www.cnblogs.com/wysAC666/p/10361286.html