hdu1069
来源:互联网 发布:手机淘宝申请开店流程 编辑:程序博客网 时间:2024/06/06 00:32
高有3种,长比 宽长,于是每种矩形可以产生3种类型。
对矩形长款降序排序,就转换为最长递减序列问题了。可以用dp O(n^2),也可以用dp+二分查找,就是二分查找是在不好写啊。数据比较少,直接dp吧。
import java.util.Arrays;import java.util.Scanner;class rectangle implements Comparable{ int len;int wid;int hig;public rectangle(int len,int wid,int hig){this.len=len;this.wid=wid;this.hig=hig;}public int compareTo(Object o) {int temp1 =((rectangle)o).len-len; if(temp1!=0)return temp1;int temp2=((rectangle)o).wid-wid;return temp2;}}public class Main {public static void main(String[] args){Scanner cin=new Scanner(System.in);int t=1;while(cin.hasNext()){int k=0,max=0;int n=cin.nextInt();if(n==0)return;int d[]=new int[3];int dp[]=new int[3*n];rectangle[] rec=new rectangle[3*n];for(int i=0;i<n;i++){for(int j=0;j<3;j++)d[j]=cin.nextInt();Arrays.sort(d);rec[k++]=new rectangle(d[2], d[1], d[0]);rec[k++]=new rectangle(d[2], d[0], d[1]);rec[k++]=new rectangle(d[1], d[0], d[2]);}Arrays.sort(rec, 0, k);dp[0]=rec[0].hig;for(int i=1;i<3*n;i++){dp[i]=rec[i].hig;for(int j=0;j<i;j++){if(rec[i].len<rec[j].len&&rec[i].wid<rec[j].wid && dp[i]<dp[j]+rec[i].hig){dp[i]=dp[j]+rec[i].hig;}}max=Math.max(max, dp[i]);}System.out.println("Case "+(t++)+": maximum height = "+max);}}}
- hdu1069
- hdu1069
- hdu1069
- hdu1069
- HDU1069
- hdu1069
- HDU1069
- hdu1069
- hdu1069
- HDU1069
- HDU1069
- hdu1069(dp)
- HDU1069(DAG)
- HDU1069--Monkey and Banana
- hdu1069 Monkey and Banana
- hdu1069 Monkey and Banana
- hdu1069(记忆化搜索)
- HDU1069(还是dp基础)
- 网络常用命令(三)ifconfig、ifup和ifdown
- Android开发详解之ADB命令
- mysql中的where和having子句的区别
- hdu 4503 植树节
- 黑马程序员_银行调度业务系统
- hdu1069
- 网络常用命令(四)netstat
- 移位运算符详解
- 如何阻止随时自动弹出的各种网页
- 网络常用命令(五)tcpdump
- 如何让NME开发的应用在Android上不全屏
- 【程序10】题目:打印楼梯,同时在楼梯上方打印两个笑脸
- SimpleDateFormat详解
- vxWorks应用程序加载的另一种办法