【动态规划、dp】P1091 [NOIP2004 提高组] 合唱队形 题解

题意

n n n 位同学站成一排,音乐老师要请其中的 n − k n−k n−k 位同学出列,使得剩下的 k k k 位同学排成合唱队形。

合唱队形是指这样的一种队形:设 k k k 位同学从左到右依次编号为 1 , 2 , ... , k 1,2, ...,k 1,2,...,k,他们的身高分别为 t 1 , t 2 , ... , t k t_1 ,t_2 ,\dots ,t_k t1,t2,...,tk ,则他们的身高满足 t 1 < ⋯ < t i > t i + 1 > t k ( 1 ≤ i ≤ k ) t_1 <⋯<t_i>t_{i+1}>t_k (1≤i≤k) t1<⋯<ti>ti+1>tk(1≤i≤k)。

你的任务是,已知所有 n n n 位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。

思路

题目其实就是要求 k k k 最大。即在 n n n 个数中找到 k k k 个数,使得前半段单调递增,后半段单调递减。

记 u p i up_i upi 表示以 i i i 个数为结尾的最长上升子序列长度,则 u p i = max ⁡ j = 1 i u p j + 1 ( a i > a j ) up_i = \max_{j = 1}^{i}up_j + 1(a_i > a_j) upi=maxj=1iupj+1(ai>aj),同理可以处理 d o w n i down_i downi。则要想让 k k k 最大,就是让 u p i + d o w n i up_i + down_i upi+downi 最大,找到最大的 u p i + d o w n i up_i + down_i upi+downi, k = u p i + d o w n i − 1 k = up_i + down_i - 1 k=upi+downi−1。(第 i i i 个点被统计两次),最后别忘了输出的是 n − k n-k n−k。

代码

cpp 复制代码
#include<bits/stdc++.h>
#define int long long
using namespace std;
int n,a[105],up[105],down[105];
signed main() {
	scanf("%lld",&n);
	for(int i = 1;i <= n;i++) scanf("%lld",&a[i]);
	for(int i = 1;i <= n;i++) {
		up[i] = 1;
		for(int j = 1;j < i;j++) {
			if(a[j] < a[i]) up[i] = max(up[i],up[j] + 1);
		}
	}
	for(int i = n;i >= 1;i--) {
		down[i] = 1;
		for(int j = n;j > i;j--) {
			if(a[j] < a[i]) down[i] = max(down[i],down[j] + 1);
		}
	}
	int ans = -1e18;
	for(int i = 1;i <= n;i++) ans = max(ans,up[i] + down[i] - 1);
	printf("%lld\n",n - ans);
    return 0;
}
相关推荐
唐青枫8 分钟前
Java SLF4J 实战指南:从日志门面到 Logback、MDC 和链路追踪
java
星云开发35 分钟前
拒绝无效加班!用Python打造自动化办公流,附Word/PDF互转硬核代码
python
jvmind_dev40 分钟前
Java GC 实战指南(番外篇):被忽视的隐形杀手 —— Class Unloading 如何拖垮 GC
java·后端
可编程芯片开发42 分钟前
基于MPPT最大功率跟踪的离网光伏发电系统Simulink建模与仿真
算法
An_s44 分钟前
机器学习python之识别图中物品信息
java·linux·开发语言
AI科技星1 小时前
线性算子不是空间映射函数,是全域双螺旋场之间拉伸、旋转、耦合、坍缩的跨空间标准化变换载体《全域数学vs传统数学:人类文明进阶200讲》第80讲
线性代数·算法·矩阵·数据挖掘·回归·乖乖数学·全域数学
米罗篮1 小时前
矩阵快速幂 (Exponentiation By Squaring Applied To Matrices)
c++·线性代数·算法·矩阵
肖爱Kun1 小时前
C++设计策略模式
开发语言·c++·策略模式
2501_914245931 小时前
C语言与硬件交互:从GPIO到中断的嵌入式编程实践
c语言·单片机·交互
dream_home84071 小时前
图像算法模型NPU适配与算法服务实战指南
人工智能·python·算法·npu 图像服务