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 ...
随机推荐
- MapReduce学习总结之Combiner、Partitioner、Jobhistory
一.Combiner 在MapReduce编程模型中,在Mapper和Reducer之间有一个非常重要的组件,主要用于解决MR性能瓶颈问题 combiner其实属于优化方案,由于带宽限制,应该尽量ma ...
- python之数据驱动Excel+ddt操作(方法二)
一.Mail163数据如下: 二.Excel+ddt代码如下: import xlrdimport unittestfrom selenium import webdriverfrom seleniu ...
- uiautomator2 入门教程
一.前言 在 Android 自动化测试方面,Google 提供了一个基于 Java 开发的库 UiAutomator,基本上支持所有的 Android 事件操作,使用简单. 在此基础上,有大佬开发出 ...
- 关于 .NET 与 JAVA 在 JIT 编译上的一些差异
最近因为公司的一些原因,我也开始学习一些 JAVA 的知识.虽然我一直是以 .NET 语言为主的程序员,但是我并不排斥任何其它语言.在此并不讨论 JAVA .NET 的好坏,仅仅是对 .NET 跟 J ...
- odoo里面的read_group写法
#计算数task_count = fields.Integer(compute='_compute_task_count', string="Task Count")def _co ...
- 多项式求值问题(horner规则)——Python实现
# 多项式求值(Horner规则) # 输入:A[a0,a1,a2...an],x的值 # 输出:给定的x下多项式的值p # Horner迭代形式实现 1 # 在此修改初值 2 A = [2, 6 ...
- Querydsl与SpringBoot集成
Querydsl为大多数数据库提供了一种基于Java的类型安全,类SQL的查询方式.相比JPA,Querydsl能提供更加强大的查询方式,比如关联查询.相比MyBatis,Querydsl省去了XML ...
- CUDA学习笔记-1: CUDA编程概览
1.GPU编程模型及基本步骤 cuda程序的基本步骤如下: 在cpu中初始化数据 将输入transfer到GPU中 利用分配好的grid和block启动kernel函数 将计算结果transfer到C ...
- Dubbo 实现一个Route Factory(用于灰度发布)
Dubbo 可以实现的扩展很多, 官方文档在这: https://dubbo.apache.org/zh/docs/v2.7/dev/impls/ (太简单了....) 下面我们实现一个Route F ...
- JUC学习笔记(六)
JUC学习笔记(一)https://www.cnblogs.com/lm66/p/15118407.html JUC学习笔记(二)https://www.cnblogs.com/lm66/p/1511 ...