【最优方案】合唱队形

简介: 【最优方案】合唱队形

 1126. 合唱队形

(File IO): input:chorus.in output:chorus.out

时间限制: 1000 ms  空间限制: 262144 KB  具体限制  

Goto ProblemSet

题目描述

N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。


合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1<...<Ti>Ti+1>…>TK(1<=i<=K)。


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

输入

输入文件chorus.in的第一行是一个整数N(2<=N<=100),表示同学的总数。第一行有n个整数,用空格分隔,第i个整数Ti(130<=Ti<=230)是第i位同学的身高(厘米)。

输出

输出文件chorus.out包括一行,这一行只包含一个整数,就是最少需要几位同学出列。

样例输入

8

186 186 150 200 160 130 197 220




样例输出

4

 

思路:

求最长上升序列fi,找最长下降子序列gi,相加变成ti;再循环一遍,找最大ti,输出结果(动态规划)

代码:

#include<bits/stdc++.h>
using namespace std;
int n,a[105],f[105],g[105];
int main(){
  cin>>n;
  for (int i=1; i<=n; i++) cin>>a[i];
  fill(f,f+N,1);
  fill(g,g+N,1);
  for (int i=2; i<=n; i++)
    for (int j=1; j<i; j++)
      if (a[j]<a[i]) f[i]=max(f[i],f[j]+1);
  for (int i=n-1; i>=1; i--)
    for(int j=n; j>i; j--)
      if (a[j]<a[i]) g[i]=max(g[i],g[j]+1);
  int ans=f[1]+g[1]-1;
  for (int i=2; i<=n; i++) ans=max(ans,f[i]+g[i]-1);
  cout<<n-ans<<endl;
  return 0;
}

image.gif

相关文章
|
4月前
|
SQL 开发框架 算法
【MFAC】基于偏格式动态线性化的无模型自适应控制
【MFAC】基于偏格式动态线性化的无模型自适应控制
|
4月前
|
算法
飞行员配对方案(Dinic求最大二分图匹配(对匈牙利算法的优化),以及二分图的建图方式)
飞行员配对方案(Dinic求最大二分图匹配(对匈牙利算法的优化),以及二分图的建图方式)
38 0
|
19天前
|
算法 Windows
R语言广义二次跳跃、非线性跳跃扩散过程转移函数密度的估计及其应用
R语言广义二次跳跃、非线性跳跃扩散过程转移函数密度的估计及其应用
18 0
|
4月前
|
算法
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
【MFAC】基于紧格式动态线性化的无模型自适应迭代学习控制
|
4月前
【MFAC】基于紧格式动态线性化的无模型自适应控制(Matlab代码)
【MFAC】基于紧格式动态线性化的无模型自适应控制(Matlab代码)
|
4月前
用图直观上理解梯度算子(一阶)与拉普拉斯算子(二阶)的区别,线检测与边缘检测的区别
用图直观上理解梯度算子(一阶)与拉普拉斯算子(二阶)的区别,线检测与边缘检测的区别
58 1
|
5月前
|
算法 定位技术
插值、平稳假设、本征假设、变异函数、基台、块金、克里格、线性无偏最优…地学计算概念及公式推导
插值、平稳假设、本征假设、变异函数、基台、块金、克里格、线性无偏最优…地学计算概念及公式推导
|
5月前
[C++&OpenCv] 两点距离、三点角度的计算
[C++&OpenCv] 两点距离、三点角度的计算
47 0
|
10月前
|
算法
基于适应度距离平衡的全局优化问题导向机制的改进粘液-霉菌算法(Matlab代码实现)
基于适应度距离平衡的全局优化问题导向机制的改进粘液-霉菌算法(Matlab代码实现)
|
10月前
|
算法
最优化--坐标下降法--凸优化问题与凸集
最优化--坐标下降法--凸优化问题与凸集