题意与分析

给定立方体(个数不限),求最多能堆叠(堆叠要求上方的方块严格小于下方方块)的高度。
表面上个数不限,问题是堆叠的要求决定了每个方块最多可以使用三次。然后就是对3n3n的方格序列用LIS。
注意:排序和求LIS的标准不同,否则答案会错误。

代码

#include <iostream>
#include <cstring>
#include <algorithm>
#include <vector>
#define MP make_pair
#define PB push_back
#define fi first
#define se second
#define ZERO(x) memset((x), 0, sizeof(x))
#define ALL(x) (x).begin(),(x).end()
#define rep(i, a, b) for (int i = (a); i <= (b); ++i)
#define per(i, a, b) for (int i = (a); i >= (b); --i)
#define QUICKIO                  \ios::sync_with_stdio(false); \cin.tie(0);                  \cout.tie(0);
using namespace std;template<typename T>
T read()
{T tmp; cin>>tmp;return tmp;
}struct Block
{int x,y,z; Block() {}Block(int _x,int _y,int _z):x(_x),y(_y),z(_z) {}bool operator < (const Block& rhs) const{if(x==rhs.x) return y>rhs.y;else return x>rhs.x;}
};vector<Block> vec;
void add_vec(int x,int y,int z)
{if(x>y) swap(x,y);if(x>z) swap(x,z);if(y>z) swap(y,z);vec.PB(Block(y,z,x));vec.PB(Block(x,z,y));vec.PB(Block(x,y,z));
}
int main()
{int n,kase=0; while(cin>>n){vec.clear();if(!n) break;rep(i,1,n){int x,y,z; cin>>x>>y>>z;add_vec(x,y,z);}sort(ALL(vec));int dp[105],sz=vec.size(); ZERO(dp);//rep(i,0,sz-1) cout<<dp[i]<<" ";//cout<<endl;rep(i,0,sz-1){dp[i]=vec[i].z;rep(j,0,i-1){//cout<<vec[j].x<<" "<<vec[i].x<<" "<<vec[j].y<<" "<<vec[i].y<<endl;if(vec[j].x>vec[i].x && vec[j].y>vec[i].y){dp[i]=max(dp[i],dp[j]+vec[i].z);//cout<<"Yeah, "<<j<<">"<<i<<endl;}}/*rep(j,0,sz-1)cout<<dp[j]<<" ";cout<<endl;*/}int maxans=-1;rep(i,0,sz-1)maxans=max(maxans,dp[i]);cout<<"Case "<<++kase<<": maximum height = "<<maxans<<endl;}return 0;
}

转载于:https://www.cnblogs.com/samhx/p/9652046.html

「暑期训练」「基础DP」 Monkey and Banana (HDU-1069)相关推荐

  1. [kuangbin带你飞]专题十二 基础DP1 C - Monkey and Banana HDU - 1069

    C - Monkey and Banana HDU - 1069 题目链接:https://vjudge.net/contest/68966#problem/C 题目: A group of rese ...

  2. 动态规划训练15 [Monkey and Banana HDU - 1069 ]

    Monkey and Banana HDU - 1069 题意大致是将一个长方体通过旋转,使得摞起来的建筑最高.但是必须满足这么一个条件,那就是上面的长方体的底面一定要完全被下一个长方体的底面完全覆盖 ...

  3. 基础dp C Monkey and Banana (类最长上升子序列)

    滴答滴答---题目链接 A group of researchers are designing an experiment to test the IQ of a monkey. They will ...

  4. Monkey and Banana HDU - 1069 [ 结构体排序+DP最长不上升子序列 ] 详细题解

    题解目录 1.题目 2.题意 3.思路 4.代码 1.题目 A group of researchers are designing an experiment to test the IQ of a ...

  5. Percy Liang、李飞飞等百余位学者联名发布:「基础模型」的机遇与挑战

    撰文:赵言,秦红川,程晨 校对:贾伟 随着BERT.GPT-3.DALL-e等超大模型的兴起,自监督学习+预训练模型微调适配方案,逐渐成为主流.这种范式会先在超大规模海量数据上进行自监督的模型预训练, ...

  6. 「预训练-调优」范式的未来

    智源导读:「预训练-调优」的方法,在近几年,对NLP领域带来了颠覆性的影响.然而即使我们使用了包含大量参数的大模型(例如,GPT-3),却仍然存在很多常识和推理上的问题无法解决.也有一些研究工作试图将 ...

  7. 「人工智能训练师」国家职业技能标准发布:共有五级,您是第几级?

    转自 | 机器之心 编辑 | 蛋酱.泽南 调参侠?炼丹师?都不对,该工作的学名是人工智能训练师. 从现在开始,「炼丹师」也有了明确的职业技能标准. 近日,国家人力资源社会保障部(以下简称人社部)发布了 ...

  8. 重磅消息!「人工智能训练师」国家职业技能标准发布:共有五大级别,你是第几级?...

    点击"凹凸域",马上关注 更多内容.请置顶或星标 来自:机器之心报道 编辑:蛋酱.泽南 转载请联系本公众号获得授权 调参侠?炼丹师?都不对,该工作的学名是人工智能训练师. 从现在开 ...

  9. java里面value_「Java基础知识」Java中包含哪些运算符

    原标题:「Java基础知识」Java中包含哪些运算符 在Java中包含的运算符有:算数运算符,逻辑运算符,关系运算符等. 算数运算符也就是我们平时的加减乘除余等操作:在Java中都是将右边的值赋值给左 ...

  10. python程序如何执行死刑_「Python基础知识」Python生成器函数

    原标题:「Python基础知识」Python生成器函数 对于程序而言,内存也是很重要的,因为程序中很多数据都是保存在内存中的,如果内存中存储的数据过多,那么系统就会崩溃,这是人们不希望发生的. 可以采 ...

最新文章

  1. 计算机算法设计与分析二--分治
  2. OPPO A59s手机系统时间停止运行
  3. Winform中实现文件另存为后并打开文件
  4. Vue.js最佳实践
  5. ASP.NET绑定控件语法
  6. QuickBI和DataV
  7. java官方网站下载_java下载 7.0 官方版
  8. linux中mvn命令的下载与安装
  9. 微信小程序开发详细步骤是什么?
  10. WebProxy - 网站转发代理
  11. Oracle数据库表空间数据文件最大容量以及存满时处理方法
  12. javaweb邮箱注册账号和激活
  13. PostgreSQL psql 命令语法参数说明
  14. 支付宝、微信、QQ 收款二维码三合一
  15. 亚古兽的进化之路——从Model_Builder,工具箱到python工具箱
  16. 读书笔记-深度学习入门之pytorch-第四章(含卷积神经网络实现手写数字识别)(详解)
  17. python实战| 爬取虎牙高质量小姐姐私房照!
  18. windows server 2012 R2 安装桌面体验,安装ActiveSync时提示缺少Windows组件
  19. FPGA与CPLD之区别
  20. POJ2942 UVA1364 Knights of the Round Table 圆桌骑士

热门文章

  1. 什么是盒子模型,盒子模型,标准盒模型,怪异盒模型,两种盒模型的区别,box-sizing属性
  2. tk.mybatis.mapper.MapperException: 无法获取 com.zhao.mapper.BIllTypeMapper.selectCountByExample 方法的泛型信息
  3. [4G5G专题-4]:RRU 全面了解什么是4G+5G RF静态射频共享?
  4. 【转载】Kali Linux 64位架构安装Veil-Evasion
  5. 360云盘php,360云盘外链解析php源码
  6. linux操作系统是著名的分布式系统,紫光展锐操作系统生态覆盖 Android、Linux、RTOS,面向分布式、智能化...
  7. vue函数定义的多种写法
  8. Drupal7 常用配置
  9. chrome-功能指令
  10. 认识PV/PVC/StorageClass