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
  • 相关阅读:
    使用vue-lazyload 加载图片遇到的坑
    nvm 配置安装全局nodejs
    原生 ajax 请求
    angular5 引入第三方插件
    ionic3 组件引用报错问题
    有1到10w这个10w个数,去除2个并打乱次序,如何找出那两个数
    判断数据类型
    统计字符串有多少字节
    php
    数组 、 字符串 简单去重
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5164914.html
Copyright © 2011-2022 走看看