zoukankan      html  css  js  c++  java
  • HDU 1069 Monkey and Banana

    求最长单调递减序列。

     1 #include<iostream>
     2 #include<string>
     3 #include<algorithm>
     4 #include<cstdlib>
     5 #include<cstdio>
     6 #include<set>
     7 #include<map>
     8 #include<vector>
     9 #include<cstring>
    10 #include<stack>
    11 #include<cmath>
    12 #include<queue>
    13 #include <bits/stdc++.h>
    14 using namespace std;
    15 #define INF 0x3f3f3f3f
    16 #define ll long long
    17 #define clc(a,b) memset(a,b,sizeof(a))
    18 const int maxn=1000000;
    19 const int mod=1e9+7;
    20 
    21 int d[3];
    22 int n;
    23 int dp[110];
    24 struct node
    25 {
    26     int w,l,h;
    27 } box[110];
    28 
    29 bool cmp(node a,node b)
    30 {
    31     if(a.l>b.l) return true;
    32     if(a.l==b.l&&a.w>b.w) return true;
    33     return false;
    34 }
    35 
    36 int main()
    37 { 
    38     int c=1;
    39     while(~scanf("%d",&n),n)
    40     {
    41         int k=0;
    42         int sum=0;
    43         clc(dp,0);
    44         for(int i=0; i<n; i++)
    45         {
    46             scanf("%d%d%d",&d[0],&d[1],&d[2]);
    47             sort(d,d+3);
    48             box[k].l=d[2];
    49             box[k].w=d[1];
    50             box[k].h=d[0];
    51             k++;
    52             box[k].l=d[2];
    53             box[k].w=d[0];
    54             box[k].h=d[1];
    55             k++;
    56             box[k].l=d[1];
    57             box[k].w=d[0];
    58             box[k].h=d[2];
    59             k++;
    60         }
    61         sort(box,box+k,cmp);
    62         for(int i=0; i<k; i++)
    63             dp[i]=box[i].h;
    64         for(int i=k-2; i>=0; i--)
    65         {
    66             for(int j=i+1; j<k; j++)
    67             {
    68                 if(box[i].l>box[j].l&&box[i].w>box[j].w)
    69                     if(dp[i]<box[i].h+dp[j])
    70                         dp[i]=box[i].h+dp[j];
    71             }
    72         }
    73         sum=dp[0];
    74         for(int i=0; i<k; i++)
    75         {
    76             if(sum<dp[i])
    77                 sum=dp[i];
    78         }
    79         printf("Case %d: maximum height = %d
    ",c++,sum);
    80     }
    81     return 0;
    82 }
    View Code
  • 相关阅读:
    SpringMVC+Shiro权限管理(转载)
    面试常见问题(转载)
    JavaScript 五种(非构造方式)继承
    JavaScript 五种(构造方式)继承
    Quartz.Net 基于XML配置启动
    jexus防止产生 *.core文件
    Last-Modified、ETag、Expires和Cache-Control
    正则表达式记录
    C# 操作mongodb子文档
    ASP.NET Core "完整发布,自带运行时" 到jexus
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5164914.html
Copyright © 2011-2022 走看看