当前位置: 首页 > news >正文

P1091 [NOIP 2004 提高组] 合唱队形

题目链接:

思路:

题目意思,找出最少的同学出列,保证学生 1-t 上升, t-n 下降。我们只要求出每个点的最长上升子序列和最长不上升子序列,然后总人数-最长上升子序列和最长不上升子序列+1,就是最少同学出列。

代码:

#include<bits/stdc++.h>
#define int long long 
using namespace std;
const int N = 110;

int n, arr[N];
int dp[N], g[N];

signed main(){
    cin >> n;
    for(int i =1; i <= n; i++) cin >> arr[i];
    
    //上升
    for(int i = 1; i <= n; i++){
        dp[i] = 1;
        for(int j = 1;  j< i; j++){
            if(arr[j] < arr[i]){
                dp[i] = max(dp[i], dp[j]+1);
            }
        }
    }
    //下降
    for(int i = n; i >=1; i--){
        g[i] = 1;
        for(int j =n; j > i; j--){
            if(arr[j] < arr[i]){
                g[i] = max(g[i], g[j]+1);
            }
        }
    }
    
    //找到最长上升子序列和最长不上升子序列数量
    int ans = 0;
    for(int i =1; i <= n; i++){
        ans = max(ans, g[i]+dp[i]);
    }
    
    
    cout << n - ans +1<< endl;
    return 0;
}

相关文章:

  • 码上爬-第78题
  • 音视频(一)ZLMediaKit搭建部署
  • 如何屏蔽mac电脑更新提醒,禁止系统更新
  • Gossip协议:分布式系统中的“八卦”传播艺术
  • 【大模型】SpringBoot整合LangChain4j实现RAG检索实战详解
  • 超导量子计算机编程实战:IBM Qiskit 2025新API详解
  • 每日算法-250330
  • 两阶段提交2PC原理
  • HCIP--5实验:综合实验
  • Unity中给Animator扩展一个异步等待播放指定clip的方法
  • QFlightInstruments飞行仪表控件库
  • 快速幂算法
  • 【Qt】文件与音视频
  • 【C++】map
  • 华为开源自研AI框架昇思MindSpore应用案例:基于MindSpore框架实现PWCNet光流估计
  • 梓航建站CMS独立版最新v1.9.4全插件PC+H5
  • 表格结构数据
  • 3.29:数据结构-绪论线性表-上
  • 类与对象(下)
  • 智能指针/内存泄露/类型转换