合唱队行 (最长上升子序列)

简介: 合唱队行 (最长上升子序列)

482. 合唱队形 - AcWing题库

列举每一个小朋友当最高点,分左边和右边进行求最长上升子序列,取他们的最大值,最后减去用n减去最长上升子序列就行了

#include<iostream>
#include<cstring>
#include<algorithm>
 
using namespace std ;
const int N = 500;
int f[N] ;
int a[N] ;
int b[N] ;
int main(){
  int n ;
  cin >> n ;
  for(int i = 1 ; i <= n ;i ++) cin >> a[i] ;
  for(int i = 1 ; i <= n ;i ++){
    for(int j = 1 ; j <= i ; j ++) b[j] = a[j] ;
    int len = 0 ;int dp[N] ;
    memset(dp,0,sizeof(dp)) ;
    for(int k = 1 ; k <= i ; k ++){
      dp[k] ++ ;
      for(int l = 1 ; l < k ;l ++ ){
        if(b[k] > b[l]) dp[k] = max(dp[k],dp[l]+1) ;
      }
    }
    len += dp[i] ;
    memset(dp,0,sizeof(dp)) ;
    int cnt = 1 ;
    for(int j = n ; j >= i ; j--) b[cnt++] = a[j] ; 
    cnt -- ;
    for(int k = 1 ; k <= cnt ; k ++){
      dp[k] ++ ;
      for(int l = 1 ; l < k ;l ++ ){
        if(b[k] > b[l]) dp[k] = max(dp[k],dp[l]+1) ;
      }
    }
    len += dp[cnt] ; len -- ;
    f[i] = len ;
  }
  int ans = 0 ;
  for(int i = 1 ; i <= n ; i++) ans = max(ans,f[i]) ;
  cout << n-ans << endl ;
}
目录
相关文章
|
XML 监控 负载均衡
Jacoco的覆盖率原理
JaCoCo(Java Code Coverage)是一种广泛使用的代码覆盖率工具,通过在字节码中插入探针(Probe)来收集覆盖率信息。
940 6
Jacoco的覆盖率原理
|
机器学习/深度学习 人工智能 算法
【算法】最长公共子序列(C/C++)
【算法】最长公共子序列(C/C++)
|
弹性计算 Serverless 持续交付
聊聊如何把项目从Gitee部署到阿里云上
【7月更文挑战第11天】聊聊如何把项目从Gitee部署到阿里云上
671 1
|
JSON JavaScript Ubuntu
Ubuntu安装docker
Ubuntu安装docker
4955 0
|
消息中间件 Linux Kafka
CentOS7下使用Mondo Rescue实现系统全备份
CentOS7下使用Mondo Rescue实现系统全备份
1734 0
CentOS7下使用Mondo Rescue实现系统全备份
|
安全 测试技术 Linux
【实战演练】只需一行代码,轻松解决Docker 和UFW 防火墙的安全漏洞
为什么Docker 和UFW 防火墙结合使用会产生安全问题呢?我们又该如何解决这个问题呢?
5979 0
|
域名解析 存储 Rust
使用let's encrypt申请免费的SSL证书
使用let's encrypt申请免费的SSL证书
16069 2
|
Ubuntu 网络安全 开发工具
Cubic(Custom Ubuntu ISO Creator)创建自定义镜像
Cubic(Custom Ubuntu ISO Creator)创建自定义镜像
1963 0
Cubic(Custom Ubuntu ISO Creator)创建自定义镜像
|
算法
计算方法/数值分析 期末复习整理
计算方法/数值分析 期末复习整理
321 0
计算方法/数值分析 期末复习整理