洛谷链接:https://www.luogu.com.cn/problem/P1091

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

题目描述

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

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

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

输入格式

共二行。

第一行是一个整数 \(n\)(\(2\le n\le100\)),表示同学的总数。

第二行有 \(n\) 个整数,用空格分隔,第 \(i\) 个整数 \(t_i\)(\(130\le t_i\le230\))是第 \(i\) 位同学的身高(厘米)。

输出格式

一个整数,最少需要几位同学出列。

输入输出样例 #1

输入 #1

8
186 186 150 200 160 130 197 220

输出 #1

4

说明/提示

对于 \(50\%\) 的数据,保证有 \(n \le 20\)。

对于全部的数据,保证有 \(n \le 100\)。

思路:

遍历每个点作为峰值点的情况,分别求左边的最长上升子序列和右边的最长下降子序列

最后遍历统计最大值情况

题解:

#include <bits/stdc++.h>
using namespace std;
const int N=1e2+10;
typedef long long ll;
int n;
int h[N];
int f1[N];
int f2[N];
int maxn=0;
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>h[i];
f1[i]=1,f2[i]=1;
}
for(int i=1;i<=n;i++)
{
for(int j=1;j<i;j++)
{
if(h[i]>h[j])f1[i]=max(f1[i],f1[j]+1);
}
}
for(int i=n;i>=1;i--)
{
for(int j=n;j>i;j--)
{
if(h[i]>h[j])f2[i]=max(f2[i],f2[j]+1);
}
}
for(int i=1;i<=n;i++)maxn = max(maxn,f1[i]+f2[i]-1);
cout<<n-maxn<<endl; return 0;
}

P1091 [NOIP 2004 提高组] 合唱队形 (动态规划,最长上升子序列,最长下降子序列)的更多相关文章

  1. 【模板】LIS模板 洛谷P1091 [NOIP2004提高组]合唱队形 [2017年4月计划 动态规划11]

    以题写模板. 写了两个:n^2版本与nlogn版本 P1091 合唱队形 题目描述 N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形. 合唱队形是指这样的一种队 ...

  2. P1091 [NOIP2004 提高组] 合唱队形

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

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

    本题是一个简单的 LIS(最长上升子序列)问题     只是要求俩次最长上子序列而已   很容易的 首先由于是最长上升子序列 所以朴素法的动态规划表达式为  f[i] = max( f[i] , f[ ...

  4. NOIP 2008提高组第三题题解by rLq

    啊啊啊啊啊啊今天已经星期三了吗 那么,来一波题解吧 本题地址http://www.luogu.org/problem/show?pid=1006 传纸条 题目描述 小渊和小轩是好朋友也是同班同学,他们 ...

  5. [NOIp 1998 提高组]Probelm 2 连接多位数【2011百度实习生笔试题】

    /*====================================================================== [NOIp 1998 提高组]Probelm 2 连接 ...

  6. NOIP 2014 提高组 题解

    NOIP 2014 提高组 题解 No 1. 生活大爆炸版石头剪刀布 http://www.luogu.org/problem/show?pid=1328 这是道大水题,我都在想怎么会有人错了,没算法 ...

  7. NOIP 2001 提高组 题解

    NOIP 2001 提高组 题解 No 1. 一元三次方程求解 https://vijos.org/p/1116 看见有人认真推导了求解公式,然后猥琐暴力过的同学们在一边偷笑~~~ 数据小 暴力枚举即 ...

  8. 最优贸易 NOIP 2009 提高组 第三题

    题目描述 C 国有 n 个大城市和 m 条道路,每条道路连接这 n 个城市中的某两个城市.任意两个 城市之间最多只有一条道路直接相连.这 m 条道路中有一部分为单向通行的道路,一部分 为双向通行的道路 ...

  9. NOIP 2006 提高组 t1 能量项链

    题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...

  10. NOIP2018提高组金牌训练营——动态规划专题

    NOIP2018提高组金牌训练营——动态规划专题 https://www.51nod.com/Live/LiveDescription.html#!#liveId=19 多重背包 二进制优化转化成01 ...

随机推荐

  1. 机器学习中的"食材挑选术":特征选择方法

    想象你要做一道美食,面对琳琅满目的食材,优秀的厨师不会把所有原料都扔进锅里,而是会选择最适合的几种. 在机器学习中,特征选择就是这个挑选过程,从原始数据中选择对预测目标最有用的特征(列),就像挑选优质 ...

  2. MAC系统13.2,安装最新版logi options+,打开一直转圈

    我联系官网客服,按照他给的步骤成功的安装了options+,你试试 请抽出时间按照下面列出的故障排除步骤尝试解决问题. 卸载我们所有的软件 删除剩余文件 步骤 1:打开 Finder,在菜单栏中选择& ...

  3. 重写IE的showModalDialog模态框以兼容现代浏览器

    背景 之前有个项目是 jsp 的,之前都是在 IE 浏览器上运行,现在要将这个项目做兼容性改造(信创),需要兼容谷歌.所以需要将项目中的公共弹框给改掉,而项目中模态框基本上都是用的 showModal ...

  4. Java代码审计SpEL表达式注入

    SpEL表达式概念 Spring Expression Language(SpEL) 是 Spring Framework 提供的一种功能强大的表达式语言,全称为 Spring Expression ...

  5. linux系统qcow2镜像的制作

    一.简单说明 PS: 最近有客户需要在云平台上部署我们的产品,好久没有做过qcow2镜像了,这里还是把制作流程记录下来. QCOW2镜像格式是Qemu支持的磁盘镜像格式之一.它可以使用一个文件来表示一 ...

  6. BAPI_CUSTOMERRETURN_CREATE 创建退货订单

    READ TABLE s_head INDEX 1. IF sy-subrc = 0. ls_orders_h = s_head. *** 抬头 CLEAR: ls_header,ls_headerx ...

  7. 基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索

    随着业务的发展,实时场景在各个⾏业中变得越来越重要.⽆论是⾦融.电商还是物流,实时数据处理都成为了其中的关键环节.Flink 凭借其强⼤的流处理特性.窗⼝操作以及对各种数据源的⽀持,成为实时场景下的⾸ ...

  8. ABB机器人指令 PackRawBytes

    参数: Value, RawData \Network , StartIndex ,\Hex1|IntX|\Float4|\ASCII; Value: 需要打包的数据, 类型包含num.dnum, b ...

  9. 【工厂和策略设计模式妙用】解决接口选择与多重if-else 问题

    利用工厂和策略模式解决接口选择与多重if-else问题 在软件开发中,我们经常会遇到需要根据不同的条件选择不同实现的情况.传统的if-else或switch-case方式虽然直观,但随着业务逻辑复杂度 ...

  10. Hugging Face 开源机器人 Reachy Mini 开启预定

    Reachy Mini 是一款富有表现力的开源机器人,专为人机交互.创意编程和 AI 实验而设计.它价格亲民,体积小巧,却蕴藏着无限可能.无论年龄大小,全球的 AI 开发者都可以通过它共同编程.学习与 ...