本题是一个简单的 LIS(最长上升子序列)问题     只是要求俩次最长上子序列而已   很容易的

首先由于是最长上升子序列 所以朴素法的动态规划表达式为 

f[i] = max( f[i] , f[j] + 1);

就是求出到每个点的最长上升子序列而已啦

从题目所给的条件 我们可以推出一下结论

1.本题是要求出从 第一个人到第i个最高的人的最长上升子序列  以及从第i个人到第n个人的最长下降子序列(其实就是第n个人反向到第i个人的最长上升子序列)

2.由于是最长上升子序列 可以想到如下代码   即最长上升子序列的代码

for ( int i = 1; i <= n; i++ )
{
f[i] = 1;
for ( int j = 1; j < i; j++ )
if( a[i] > a[j] )
f[i] = max( f[i] , f[j] + 1);
}

有了这个代码那我们就可以进一步写出反向的最长子序列的代码

for ( int i = n; i; i-- )
{
f[i] = 1;
for( int j = n; j > i; j-- )
if( a[i] > a[j] )
f[i] = max(f[i], f[j] + 1);
}

得到了俩个代码我们就可以写出我们的

Ac Coding

#include <iostream>

using namespace std;

const int N = 1010;

int a[N],f[N],g[N];
int n; int main()
{
cin >> n;
for ( int i = 1; i <= n; i++ ) cin >> a[i]; for ( int i = 1; i <= n; i++ )
{
f[i] = 1;
for ( int j = 1; j < i; j++ )
if( a[i] > a[j] )
f[i] = max( f[i] , f[j] + 1);
} for ( int i = n; i; i-- )
{
g[i] = 1;
for( int j = n; j > i; j-- )
if( a[i] > a[j] )
g[i] = max(g[i], g[j] + 1);
} int ans = 0;
for ( int i = 1; i <= n; i++ ) ans = max( ans, f[i] + g[i] - 1 );//求出最多留下来的人数 cout << n - ans;//减去留下来的人数,就是要踢出队伍的人数了(太残酷了
return 0;
}

洛谷P1091 [NOIP2004 提高组] 合唱队形的更多相关文章

  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. 洛谷P6033 [NOIP2004 提高组] 合并果子 加强版 (单调队列)

    数据加强了,原来nlogn的复杂度就不行了...... 首先对原来的n个数排序(注意不能用快排),因为值域是1e5,所以可以开桶排序,开两个队列,一个存原来的n个数(已经满足单增),另一队列存两两合并 ...

  4. 洛谷 P2678 & [NOIP2015提高组] 跳石头

    题目链接 https://www.luogu.org/problemnew/show/P2678 题目背景 一年一度的“跳石头”比赛又要开始了! 题目描述 这项比赛将在一条笔直的河道中进行,河道中分布 ...

  5. 洛谷 P1025 & [NOIP2001提高组] 数的划分(搜索剪枝)

    题目链接 https://www.luogu.org/problemnew/show/P1025 解题思路 一道简单的dfs题,但是需要剪枝,否则会TLE. 我们用dfs(a,u,num)来表示上一个 ...

  6. 洛谷P1514 [NOIP2010提高组T4]引水入城

    P1514 引水入城 题目描述 在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形,如上图所示,其中每个格子都代表一座城市,每座城 ...

  7. 洛谷P1084 [NOIP2012提高组Day2T3]疫情控制

    P1084 疫情控制 题目描述 H 国有 n 个城市,这 n 个城市用 n-1 条双向道路相互连通构成一棵树,1 号城市是首都,也是树中的根节点. H 国的首都爆发了一种危害性极高的传染病.当局为了控 ...

  8. 洛谷P1083 [NOIP2012提高组Day2T2]借教室

    P1083 借教室 题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借 ...

  9. 洛谷P1315 [NOIP2011提高组Day2T3] 观光公交

    P1315 观光公交 题目描述 风景迷人的小城Y 市,拥有n 个美丽的景点.由于慕名而来的游客越来越多,Y 市特意安排了一辆观光公交车,为游客提供更便捷的交通服务.观光公交车在第 0 分钟出现在 1号 ...

随机推荐

  1. JVM基础学习(二):内存分配策略与垃圾收集技术

    Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的高墙,墙外面的人想进去,墙里面的人却想出来 垃圾收集概述 Java内存模型中的堆和方法区是垃圾收集技术所需要关注的终点,因为其他的区域会跟 ...

  2. Spring Boot数据访问之整合Mybatis

    在Mybatis整合Spring - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中谈到了Spring和Mybatis整合需要整合的点在哪些方面,需要将Mybatis中数据库连接池等相关对 ...

  3. sql server通过T-SQL导出Excel到磁盘

    ALTER PROCEDURE [dbo].[pro_ImportExcelByTime] AS BEGIN --第一步,开启高级功能 EXEC sp_configure 'show advanced ...

  4. kali主机探测命令与工具集

    实验目的 熟悉ping.arping.fping.hping3.nbtscan.nping.p0f.xprobe2工具对目标主机的探测方法. 实验原理 目标识别工具发送特殊构造的数据包,根据返回的应答 ...

  5. SaccadeNet:使用角点特征进行two-stage预测框精调 | CVPR 2020

    SaccadeNet基于中心点特征进行初步的目标定位,然后利用初步预测框的角点特征以及中心点特征进行预测框的精调,整体思想类似于two-stage目标检测算法,将第二阶段的预测框精调用的区域特征转化为 ...

  6. 数据平滑处理-均值|中值|Savitzky-Golay滤波器

    均值滤波器 均值滤波器是一种使用频次较高的线性滤波器.它的实现原理很简单,就是指定一个长度大小为奇数的窗口,使用窗口中所有数据的平均值来替换中间位置的值,然后平移该窗口,平移步长为 1,继续重复上述操 ...

  7. 【C#TAP 异步编程】构造函数 OOP

    原文:异步 OOP 2:构造函数 (stephencleary.com) 异步构造带来了一个有趣的问题.能够在构造函数中使用会很有用,但这意味着构造函数必须返回一个表示将来将构造的值,而不是构造的值. ...

  8. 【C#基础概念】元数据 metadate

    元数据是指"描述资料的资料".它被用来概述资料的基础信息,以简化查找过程与方便使用[6]. 创建资料的方法 资料的用途 创建的时间与日期 资料的创建者或作者 资料被创建在电脑网络的 ...

  9. Mono创始人 Miguel de Icaza今天离开微软

    2016年,微软突然宣布收购移动工具开发商Xamarin,后者是位于美国加利福尼亚,据称微软收购Xamarin交易价格在4亿到5亿美元之间.因此,微软获得了著名的开源倡导者和开发人员Miguel de ...

  10. redis部署以及各种数据类型使用命令等详解

    参考:https://www.cnblogs.com/pyyu/p/9843950.html  redis博客地址 编译安装redis 开始部署 [root@mcw01 ~]$ ls anaconda ...