codevs 1058 合唱队形(DP)
来源:互联网 发布:广州淘宝模特 编辑:程序博客网 时间:2024/05/16 04:57
题目描述 Description
N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1<…Ti+1>…>TK(1<=i<=K)。
你的任务是,已知所有N位同学的身高,计算最少需要几位同学出列,可以使得剩下的同学排成合唱队形。输入描述 Input Description
输入文件chorus.in的第一行是一个整数N(2<=N<=100),表示同学的总数。第一行有n个整数,用空格分隔,第i个整数Ti(130<=Ti<=230)是第i位同学的身高(厘米)。输出描述 Output Description
输出文件chorus.out包括一行,这一行只包含一个整数,就是最少需要几位同学出列。样例输入 Sample Input
8
186 186 150 200 160 130 197 220样例输出 Sample Output
4数据范围及提示 Data Size & Hint
对于50%的数据,保证有n<=20;
对于全部的数据,保证有n<=100。
题解:一道比较水的DP,我们把这个序列分成两部分来看,那么左边的部分是求一个最长上升子序列,右边是求一个最长下降子序列。那么我们就可以分别求一下整个序列的最长上升子序列和最长下降子序列,然后枚举中间点得到最多能留下来的人,然后就知道了答案。
PS:这道题我求了两遍最长上升子序列,正着一遍反着一遍,思想是一样的
代码如下:
#include<cstdio>#include<cstring>#include<iostream>using namespace std;int a[1010],b[1010];int dp1[1010],dp2[1010];int main(){ int n,maxx=0; scanf("%d",&n); for(int i=1;i<=n;i++) { scanf("%d",&a[i]); b[n-i+1]=a[i];//倒着存一下序列 } for(int i=1;i<=n;i++) { dp1[i]=1; for(int j=1;j<i;j++) if(a[j]<a[i]) dp1[i]=max(dp1[i],dp1[j]+1); }//正着求最长上升子序列 for(int i=1;i<=n;i++) { dp2[i]=1; for(int j=1;j<i;j++) if(b[j]<b[i]) dp2[i]=max(dp2[i],dp2[j]+1); }//把序列倒过来再求一遍最长上升子序列 for(int i=1;i<=n;i++) if(dp1[i]+dp2[n-i+1]>maxx) maxx=dp1[i]+dp2[n-i+1];//枚举中间点找最大值 printf("%d",n-maxx+1);//减去最大值就是答案 return 0;}
2 0
- codevs 1058 合唱队形(DP)
- codevs 1058 合唱队形
- 【codevs 1058】合唱队形
- codevs 1058 合唱队形 (动态规划 & LIS)
- codevs 1058 合唱队形 题解报告
- Codevs 1058 合唱队形 ---2004年NOIP全国联赛提高组 dp
- 【NOIP2004】CODE[VS] 1058 合唱队形(序列型DP)
- 集训-变形合唱队形(DP)
- luogu1091【2004提高】合唱队形(dp)
- 合唱队形 dp
- 合唱队形 【经典DP】
- [DP][NOIP2004] 合唱队形
- CUGB 1009 合唱队形 【DP】
- [NOIP 2004]合唱队形 DP
- noip 2004-合唱队形-dp
- 【DP】洛谷 P1091 合唱队形
- Jobdu1131 合唱队形(DP,LIS)
- 1058 合唱队形
- PyCharm 2016.2 Database 数据库 工具 配置方法
- iOS跳转界面时隐藏tabBar的方法
- Singleton 单例模式(懒汉方式和饿汉方式)
- Unity发布到iOS平台后的相关问题
- express和body-parser的登录项目
- codevs 1058 合唱队形(DP)
- hdu5938Four Operations
- Android 框架的组成
- UIScrollView配合定时器自动循环滚动
- Triangle
- php中百度编辑器的使用
- 【MySQL】MySQL的数据类型
- 13. Roman to Integer
- IOS开发之UIScrollViewDelegate详解