HDU1096(最大递增子序列的变形)

2023-10-27

http://acm.hdu.edu.cn/showproblem.php?pid=1069

输入几种方块,当方块的长宽小于下面那个时可以放在上面,求最大方块的高度。(方块可以无限)
每个方块有6种不同的状态,比如(10,20,30),(10,30,20)等等。30个方块的话,最多有180种形态。
思路:把所有的方块按照x从大到小排列,状态转化方程类似最大递增子序列。

if (dp[i].z + temp.z > dp[dp_i].z) dp[dp_i].z = dp[i].z;
#include<iostream>
#include<queue>
using namespace std;
struct box
{
    int x;
    int y;
    int z;
    friend bool operator < (box a, box b){
        if (a.x == b.x)
            return a.y < b.y;
        return a.x < b.x;
    }
}dp[200],box1;
int n;int x, y, z;
priority_queue<box> q;
int main(){
    int time = 1;
    while (cin >> n&&n){
        for (int i = 0; i <= n * 3; i++){
            dp[i].x = dp[i].y = dp[i].x = 0;
        }
        while (n--)
        {

            cin >> x >> y >> z;
            box1 = { x, y, z }; q.push(box1);
            box1 = { x, z, y }; q.push(box1);
            box1 = { y, x, z }; q.push(box1);
            box1 = { y, z, x }; q.push(box1);
            box1 = { z, x, y }; q.push(box1);
            box1 = { z, y, x }; q.push(box1);
        }
        int dp_i=1,max=0;
        while (q.size()>0)
        {
            box temp = q.top(); q.pop();
            //cout << temp.x << temp.y << " ";
            dp[dp_i] = temp;
            dp[dp_i].z = 0;
            for (int i = 1; i < dp_i; i++){
                if (dp[i].x <= temp.x) continue;
                if (dp[i].y <= temp.y) continue;
                if (dp[i].z + temp.z > dp[dp_i].z) dp[dp_i].z = dp[i].z;
            }
            dp[dp_i].z = dp[dp_i].z + temp.z;
            if (dp[dp_i].z>max) max = dp[dp_i].z;
            dp_i++;
        }
        cout << "Case "<<time++<<": maximum height = "<<max<< endl;

    }
    return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HDU1096(最大递增子序列的变形) 的相关文章

  • 强化学习 学习资料整理(持续更新)

    关于强化学习 比较经典的书当然是 Richard Sutton 的 Reinforcement Learning An Introduction 下面的资料大部分也是关于这本书的读书笔记和相关课程及代码 教学视频系列 强化学习纲要 十课 代
  • 2028:【例4.14】百钱买百鸡

    2028 例4 14 百钱买百鸡 时间限制 1000 ms 内存限制 65536 KB 提交数 1393 通过数 595 题目描述 百钱买百鸡问题 鸡翁一 值钱五 鸡母一 值钱三 鸡雏三 值钱一 百钱买百鸡 问鸡翁 鸡母 鸡雏各几何 输入

随机推荐

  • 使用线程以及对信号量 AutoResetEvent和ManualResetEvent的理解

    声明线程 DoThreads是串口执行的方法名称 Thread DoThreads new Thread new ThreadStart DoThreads DoThreads IsBackground true 是否跟着主线程结束而结束
  • 【翻译】 用纸质电路增加开源的包容性

    你知道吗 LWN net是一份由订阅者支持的出版物 我们依靠订阅者来维持整个运作 请通过购买订阅来帮助我们 让LWN继续在网上运行 作者 Jonathan Corbet 2018年1月30日 linux conf au 开源软件有一个包容性
  • JS正则表达式(二)

    取得字符串的字节长度 代码 function strlen str var i var len len 0 for i 0 i
  • 行人重识别(ReID)概述

    什么是Re ID 行人重识别 Person Re identification也称行人再识别 简称为ReID 是利用计算机视觉技术判断图像或者视频序列中是否存在特定行人的技术 广泛被认为是一个图像检索的子问题 给定一个监控行人图像 检索跨设
  • mysql 快照和binlog_利用快照卷和日志文件对mysql数据库备份和恢复

    基于快照卷做备份和日志文件做恢复 1 首先对数据库施加读锁 2 记录二进制日志文件的文件名和事件位置 3 创建快照卷 4 解锁数据库 5 挂载快照卷 复制数据文件 6 删除快照卷 登录mysql服务器 root station58 mysq
  • 使用python中的matplotlib绘画激活函数图像

    使用python中的matplotlib绘画激活函数图像 import matplotlib pyplot as plt import numpy as np plt rcParams font sans serif SimHei 显示汉字
  • 1033 旧键盘打字(20)(20 分)

    旧键盘上坏了几个键 于是在敲一段文字的时候 对应的字符就不会出现 现在给出应该输入的一段文字 以及坏掉的那些键 打出的结果文字会是怎样 输入格式 输入在2行中分别给出坏掉的那些键 以及应该输入的文字 其中对应英文字母的坏键以大写给出 每段文
  • 使用Python对excel中的数据进行处理

    一 读取excel中的数据 首先引入pandas库 没有的话使用控制台安装 pip install pandas import pandas as pd 引入pandas库 别名为pd read excel用于读取excel中的数据 这里只
  • Filtering arrays in Dart

    Dart Filtering arrays in Dart 初探Dart 初次接触Dart这个语言 感觉语法还是还是很舒服的 定义类 枚举什么的 语言都挺简洁 很友好的构造函数 这种最新的语言能够兼容之前老的语言的很多优点 唯一感觉不能理解
  • 7-1 用格里高利公式求给定精度的PI值 (15分)

    教育超市 浙大版 C语言程序设计 第3版 第4章 循环结构 练习4 1 用格里高利公式求 的近似值 本题要求编写程序 计算序列部分和 4 1 1 3 1 5 1 7 直到最后一项的绝对值小于给定精度eps 输入格式 输入在一行中给出一个正实
  • Android平台功耗优化方案总结之软件层功耗定位?

    功耗和温升通常是Android系统的硬伤 尤其是结构空间有限的Android系统设备 比如用Android系统开发的手表设备 结构有限意味着能放的电池容量不会很大 导致待机时间变得特别短 而且通常这种手表设备的在原始Android系统上 功
  • 在centos上安装splint

    lint lint是最著名的C语言工具之一 是由贝尔实验室SteveJohnson于1979在PCC PortableC Compiler 基础上开发的静态代码分析 一般由UNIX系统提供 工具介绍 与大多数C语言编译器相比 lint可以对
  • leetcode--SQL例题+数据库面经(留个坑再填

    SQL 都忘没了 没了 了 常见操作 增删改查 1 增 insert 2 删 delect 3 改 update 4 查 select 建表约束 主键约束 自增约束 外键约束 唯一约束 非空约束 默认约束 T1 SQL查询 联结 编写一个
  • 「GoCN酷Go推荐」终端进度条-pb

    什么是 pb pb是一个Go语言的终端进度条库 什么时候需要pb 终端显示的工具进行定时等待 IO传输等操作时 都可以用pb来显示当前进度 pb入门 安装pb go get github com cheggaaa pb v3 快速上手 pa
  • ISE14.7 win10安装步骤

    废话不多说 最近导师有项目 需要用到FPGA 我也不知道能不能做 先装来备着 指不定要学 直接上图 在关键的地方加以文字说明 1 打开安装包后 双击xsetup exe即可开始安装 2 中间点两个勾都要打上 3 点接受 下一步 4 5 6
  • Photoshop的时间轴是灰色的,不能使的解决方法

    我操作的是Adobe Photoshop CC版本 20 0 4 2019 想用时间轴作GIF动画效果 但调出时间轴后 时间轴的工作区却是灰色的 点哪里都没有反应 把PS打开又关掉好几次 都不行 研究了半天 终于解决了 方法 要创建视频时间
  • Linux模块文件如何编译到内核和独立编译成模块

    1 编译成独立模块 假定我们有以下驱动程序 要编译成可以加载到开发板的独立ko文件 hello c include
  • 第一章,测试平台开发简介

    1 1 测试平台简介 平台就是一种用来实现某种功能的体系 平台包括各种不同的元素 架构 流程 标准 机制和工具等等 以测试为例 架构 测试体系中有关的各种Roles以及对应的Responsibilities 流程 测试相关的各种流程 比如测
  • 2022 年 MathorCup 高校数学建模挑战赛——大数据竞赛(北京移动用户体验影响因素研究全套代码)

    赛道 B 北京移动用户体验影响因素研究 移动通信技术飞速发展 给人们带来了极大便利 人们也越来越离不开移动通信技术带来的各种便捷 随着网络不断的建设 网络覆盖越来越完善 各个移动运营商 越来越重视客户的网络使用体验 从而进一步提升网络服务质
  • HDU1096(最大递增子序列的变形)

    http acm hdu edu cn showproblem php pid 1069 输入几种方块 当方块的长宽小于下面那个时可以放在上面 求最大方块的高度 方块可以无限 每个方块有6种不同的状态 比如 10 20 30 10 30 2