zoukankan      html  css  js  c++  java
  • 合唱队形

    链接

    分析:对前半部分求最长上升,对后半部分,求最长下降,二者的最大值即为所求,注意重复的部分

     1 #include "iostream"
     2 #include "cstdio"
     3 #include "cstring"
     4 #include "string"
     5 using namespace std;
     6 const int maxn=110;
     7 int dp1[maxn],dp2[maxn];
     8 int n;
     9 int h[maxn];
    10 int main()
    11 {
    12     cin>>n;
    13     for(int i=1;i<=n;i++)
    14         cin>>h[i];
    15     int ans=0;
    16     for(int i=1;i<=n;i++){
    17         dp1[i]=1;
    18         for(int j=1;j<i;j++){
    19             if(h[j]<h[i]&&dp1[i]<dp1[j]+1)
    20                 dp1[i]=dp1[j]+1;
    21         }
    22     }
    23     for(int i=n;i>=1;i--){
    24         dp2[i]=1;
    25         for(int j=i+1;j<=n;j++){
    26             if(h[j]<h[i]&&dp2[i]<dp2[j]+1)
    27                 dp2[i]=dp2[j]+1;
    28         }
    29     }
    30     for(int i=1;i<=n;i++)
    31         ans=max(ans,(dp1[i]+dp2[i]));
    32     cout<<(n-(ans-1))<<endl;
    33     return 0;
    34 }
    View Code
  • 相关阅读:
    安装selenium
    虚拟机安装Linux系统
    Pycharm安装+python安装+环境配置
    shell命令
    单例模式
    装饰者模式
    AtomicInteger的CAS原理
    J.U.C总览图
    锁机制(四)
    锁机制(三)
  • 原文地址:https://www.cnblogs.com/wolf940509/p/7012069.html
Copyright © 2011-2022 走看看