• 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
  • 相关阅读:
    格式化字符串漏洞利用实战之 0ctf-easyprintf
    java多线程机制中的Thread和Runnable()区别
    Eclipse中部署Android开发环境插件安装问题方案
    java接口实现
    Visual Studio UML
    java子类继承关系
    Visual Studio UML类图
    java方法重载和重写
    javaSocket笔记
    python网络爬虫笔记(九)
  • 原文地址:https://www.cnblogs.com/ITUPC/p/5164914.html
Copyright © 2020-2023  润新知