Java HdAcm1069
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner; public class Main { List<Block> blocks = null; public void inital(){
Scanner cin = new Scanner(System.in);
int n;
int m = 1;
while((n = cin.nextInt()) != 0){
blocks = new ArrayList<Block>();
for(int i = 0; i < n; i++){
int x = cin.nextInt();
int y = cin.nextInt();
int h = cin.nextInt(); if(x == y){
//x == y == z一种
if(y == h)
blocks.add(new Block(x, y, h, h));
//x == y != z三种
else {
blocks.add(new Block(x, x, h, h));
blocks.add(new Block(h, x, x, x));
blocks.add(new Block(x, h, x, x));
}
}
else{
//x == h != y三种
if(x == h){
blocks.add(new Block(x, x, y, y));
blocks.add(new Block(y, x, x, x));
blocks.add(new Block(x, y, x, x));
}
else if(y == h ){
blocks.add(new Block(x, y, y, y));
blocks.add(new Block(y, y, x, x));
blocks.add(new Block(y, x, y, y));
}
//x != y != h
else{
blocks.add(new Block(x, y, h, h));
blocks.add(new Block(x, h, y, y));
blocks.add(new Block(y, x, h, h));
blocks.add(new Block(y, h, x, x));
blocks.add(new Block(h, x, y, y));
blocks.add(new Block(h, y, x, x));
}
}
}
sort(blocks);
int maxH = 0;
for(int i = 0; i < blocks.size(); i++){
for(int j = 0; j < i; j++){
if(blocks.get(j).x < blocks.get(i).x && blocks.get(j).y < blocks.get(i).y){
blocks.get(i).dp = max((blocks.get(i).h + blocks.get(j).dp), blocks.get(i).dp);
}
maxH = max(blocks.get(i).dp, maxH);
}
}
System.out.println("Case " + (m++) + ": maximum height = " + maxH);
}
cin.close();
} public int max(int a, int b){
return a > b ? a : b;
} public void sort(List<Block> blocks){
boolean exchange;
for(int i = blocks.size() - 1; i > 0; i--){
exchange = false;
for(int j = 0; j < i; j++){
if(blocks.get(j).x > blocks.get(j+1).x ){
Block temp = blocks.get(j);
blocks.set(j, blocks.get(j+1));
blocks.set(j+1, temp);
exchange = true;
}
else if(blocks.get(j).x == blocks.get(j+1).x){
if(blocks.get(j).y > blocks.get(j+1).y){
Block temp = blocks.get(j);
blocks.set(j, blocks.get(j+1));
blocks.set(j+1, temp);
exchange = true;
}
}
}
if(!exchange){
return;
}
}
}
public static void main(String[] args) {
new Main().inital();
} class Block{
public int x;
public int y;
public int h;
public int dp;//dp指的是该块箱子放在最下面时此方案的最大的高度。
public Block(int x, int y, int h, int dp) {
this.x = x;
this.y = y;
this.h = h;
this.dp = dp;
} } }
Java HdAcm1069的更多相关文章
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 故障重现(内存篇2),JAVA内存不足导致频繁回收和swap引起的性能问题
背景起因: 记起以前的另一次也是关于内存的调优分享下 有个系统平时运行非常稳定运行(没经历过大并发考验),然而在一次活动后,人数并发一上来后,系统开始卡. 我按经验开始调优,在每个关键步骤的加入如 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- 论:开发者信仰之“天下IT是一家“(Java .NET篇)
比尔盖茨公认的IT界领军人物,打造了辉煌一时的PC时代. 2008年,史蒂夫鲍尔默接替了盖茨的工作,成为微软公司的总裁. 2013年他与微软做了最后的道别. 2013年以后,我才真正看到了微软的变化. ...
- 故障重现, JAVA进程内存不够时突然挂掉模拟
背景,服务器上的一个JAVA服务进程突然挂掉,查看产生了崩溃日志,如下: # Set larger code cache with -XX:ReservedCodeCacheSize= # This ...
- 死磕内存篇 --- JAVA进程和linux内存间的大小关系
运行个JAVA 用sleep去hold住 package org.hjb.test; public class TestOnly { public static void main(String[] ...
- 【小程序分享篇 一 】开发了个JAVA小程序, 用于清除内存卡或者U盘里的垃圾文件非常有用
有一种场景, 手机内存卡空间被用光了,但又不知道哪个文件占用了太大,一个个文件夹去找又太麻烦,所以我开发了个小程序把手机所有文件(包括路径下所有层次子文件夹下的文件)进行一个排序,这样你就可以找出哪个 ...
- Java多线程基础学习(二)
9. 线程安全/共享变量——同步 当多个线程用到同一个变量时,在修改值时存在同时修改的可能性,而此时该变量只能被赋值一次.这就会导致出现“线程安全”问题,这个被多个线程共用的变量称之为“共享变量”. ...
- Java多线程基础学习(一)
1. 创建线程 1.1 通过构造函数:public Thread(Runnable target, String name){} 或:public Thread(Runnable target ...
随机推荐
- React组件三大属性之 refs
React组件三大属性之 refs refs属性 1) 组件内的标签都可以定义ref属性来标识自己 a. <input type="text" ref={input => ...
- python -- 面向对象编程(类、对象)
一.类 类是用来描述具有相同的属性和方法的对象的集合. 它定义了该集合中每个对象共同拥有的属性和方法. 类是一个独立的单位,它有一个类名,其内部包括成员变量和成员方法,分别用于描述对象的属性和行为. ...
- sql-3-DML_DQL
DML-操作数据 1.insert语句 --增加一行数据 insert into 表名([字段1,字段2,字段3,...])values('值1','值2','值3',...); insert int ...
- 离散数学-传递闭包(POJ3275)
就是n的元素给定m个关系求他们之间的关系. eg. ∵a>b and b>c ∴a>c emmmm 若要知道n个元素的绝对关系,则需知道C(n,2)个关系. 例题:POJ3275 ...
- 搭建NFS服务
说明:这里是Linux服务综合搭建文章的一部分,本文可以作为单独搭建yum仓库的参考. 注意:这里所有的标题都是根据主要的文章(Linux基础服务搭建综合)的顺序来做的. 如果需要查看相关软件版本和主 ...
- react native踩坑记录
一 .安装 1.Python2 和Java SE Development Kit (JDK)可以直接通过腾讯电脑关键安装, Android SDK安装的时候路径里不能有中文和空格 2.配置java环境 ...
- Python实用案例,Python脚本,Python实现自动监测Github项目并打开网页
往期回顾 Python实现文件自动归类 前言: 今天我们就利用Python脚本实现Github项目的更新,提醒方式是邮箱.直接开整~ 项目地址: https://github.com/kenwoodj ...
- system V信号量和Posix信号量
一.函数上的区别 信号量有两种实现:传统的System V信号量和新的POSIX信号量.它们所提供的函数很容易被区分:对于所有System V信号量函数,在它们的名字里面没有下划线.例如,应该是sem ...
- Install Redmine Server with Bitnami Installer
Download bitnami installer: bitnami-redmine-2.4.1-1-linux-installer.run $ chmod 755 bitnami...instal ...
- JCE加密和解密 bouncycastle
https://blog.csdn.net/weixin_43935907/article/details/89155617 https://blog.csdn.net/qq_29583513/art ...