输入输出样例

输入样例#1:

8
186 186 150 200 160 130 197 220
输出样例#1:

4

此题意在先升后降子序列,单调递增子序列,单调递减子序列当中找到最长的一组序列。

因此我们可以正向便利,1~n,i>=1&&i<=n,dp[i]为以第i个数结尾的单调递增子序列的长度。

dp[i]=max(dp[j],dp[i])(1<=j<=i&&a[j]<=a[i])a[i]为同学升高。

然后同理逆向跑一边,得到dp1数组 ,dp1[i]为以第i个结束的最长单调递增子序列。

最后我们从1~n便利一遍,ans=max(dp[i]+dp1[i]-1,ans);n-ans为答案。。。。。

下面为代码:

#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <vector>
#include<map>
using namespace std;
#define N 1000
int a[N],b[N],c[N];
int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
for(int i=;i<=n;i++)
{
for(int k=i-;k>=;k--)
if(a[k]<a[i])
b[i]=max(b[i],b[k]+);
}
for(int i=n;i>=;i--)
{
for(int k=i+;k<=n+;k++)
if(a[i]>a[k])
c[i]=max(c[i],c[k]+);
}
int sum=;
for(int i=;i<=n;i++)
{
sum=max(sum,b[i]+c[i]-);
}
printf("%d\n",n-sum);
return ;
}

洛谷P1091 合唱队形的更多相关文章

  1. 洛谷 P1091 合唱队形

    \[传送门在这里呀\] 题目描述 \(N\)位同学站成一排,音乐老师要请其中的\((N-K)\)位同学出列,使得剩下的\(K\)位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次 ...

  2. codevs1058 合唱队形==洛谷P1091 合唱队形

    P1091 合唱队形 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的 ...

  3. 洛谷p1091合唱队形题解

    题目 合唱队形首先要满足的是从1这个位置到中间任意的位置为单增的,从中间任意的位置到最后是单减的,且长度最长.这样才能满足出列的同学最少. 如果要满足这个条件那么我们可以先预处理出每个点的从前找的最长 ...

  4. [NOIP2004] 提高组 洛谷P1091 合唱队形

    题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2, ...

  5. 洛谷—— P1091 合唱队形

    https://www.luogu.org/problem/show?pid=1091#sub  ||  http://codevs.cn/problem/1058/ 题目描述 N位同学站成一排,音乐 ...

  6. 洛谷P1091合唱队形(DP)

    题目描述 NNN位同学站成一排,音乐老师要请其中的(N−KN-KN−K)位同学出列,使得剩下的KKK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,…,K1,2, ...

  7. (Java实现) 洛谷 P1091合唱队形

    题目描述 NN位同学站成一排,音乐老师要请其中的(N−K)位同学出列,使得剩下的KK位同学排成合唱队形. 合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2,-,K1,2,-,K,他们的身 ...

  8. 洛谷 P1091合唱队列

    吾王剑之所指,吾等心之所向                           ——<Fate/stay night> 题目:https://www.luogu.org/problem/P ...

  9. 洛谷 1091 合唱队形(NOIp2004提高组)

    [题解] 分别做一遍最长上升序列和最长下降序列,再枚举峰的位置计算答案即可. #include<cstdio> #include<algorithm> #include< ...

随机推荐

  1. redis缓存中间件基础

    前序: 默认使用SimpleCacheConfiguration 组件ConcurrentMapCacheManager==ConcurrentMapCache将数据保存在ConcurrentMap& ...

  2. deep learning的一些知识点

    softmax loss: softmax:     softmax的作用,将fc的输出映射成为(0,1)的概率,并将其差距拉大. cross entropy loss:   y是样本的真实标签,为1 ...

  3. java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决

    java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决          博客分类: 问题 ApacheJavaTo ...

  4. js vue 在页面中将摄像头放在一个标签里展示,(模仿手机拍照功能)

    1.HTML <video id="video" autoplay class="fileImg"></video> <canva ...

  5. Django-CSRF的使用

    1. 为什么要有csrf_token? 防止跨站请求伪造 2. Django中如何使用? urls.py: urlpatterns = [ # 测试跨站请求伪造 (CSRF) url(r'^csrf_ ...

  6. PHP获取POST的几种方法

    一.PHP获取POST数据的几种方法 方法1.最常见的方法是:$_POST['fieldname'];说明:只能接收Content-Type: application/x-www-form-urlen ...

  7. Spring普通类/工具类获取并调用Spring service对象的方法

    参考<Spring普通类获取并调用Spring service方法>,网址:https://blog.csdn.net/jiayi_0803/article/details/6892455 ...

  8. oracle性能优化之awr分析

    oracle性能优化之awr分析 作者:bingjava 最近某证券公司系统在业务期间系统运行缓慢,初步排查怀疑是数据库存在性能问题,因此导出了oracle的awr报告进行分析,在此进行记录. 导致系 ...

  9. git之我常用的命令

    撤销修改: git checkout -- file 撤销暂存区: git reset HEAD git reset HEAD file 撤销版本库:git reset --hard HEAD^回到上 ...

  10. java按照指定格式输出系统时间使用SimpleDateFormat方法

    public class TimeThree { public static void main(String[] args) { SimpleDateFormat d = new SimpleDat ...