codevs 1058 合唱队形
来源:互联网 发布:vb 播放器 编辑:程序博客网 时间:2024/05/16 14:55
题目描述 Description
N位同学站成一排,音乐老师要请其中的(N-K)位同学出列,使得剩下的K位同学排成合唱队形。
合唱队形是指这样的一种队形:设K位同学从左到右依次编号为1,2…,K,他们的身高分别为T1,T2,…,TK, 则他们的身高满足T1<...<Ti>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。
思路:1、可以发现此题求最小用动规可解
2、n表示为最高的那位,我们可以发现求出n左边的最长上升子序列fh[n],求出n右边的最长下降子序列fl[n];
3、将他们相加再减去一(共用的n),就得多了最长的合唱队形
4、再用n减去,发现最少出列人数得到。
<pre name="code" class="cpp">#include <cstdio> #include <cstdlib> #include <cstring> #include <algorithm> #include <cmath> #include <iostream> #include <iomanip> using namespace std; int main() { int a[101],n; cin>>n; int fh[101],fl[101];//fh[n]表示单调递增最大,fl[n]表示单调递减最小 for(int i=1;i<=n;i++) { cin>>a[i]; fh[i]=1; fl[i]=1; } int maxhnum; int maxlnum; for(int i=1;i<=n;i++) { maxhnum=0; for(int j=1;j<=i-1;j++) { if(a[i]>a[j]) { if(maxhnum<fh[j]) { maxhnum=fh[j]; } } } fh[i]+=maxhnum; cout<<fh[i]<<' '; } cout<<endl; for(int i=n;i>=1;i--) //a[n] is increasing from i to n;we just need to find out The longest non descending sequence { maxlnum=0; for(int j=i+1;j<=n;j++) { if(a[i]>a[j]) { if(maxlnum<fl[j]) { maxlnum=fl[j]; } } } fl[i]+=maxlnum; cout<<fl[i]<<' '; } int maxl=0; for(int i=1;i<=n;i++) { /*if(i==1||i==n) continue;*/ maxl=max(fl[i]+fh[i]-1,maxl); } cout<<n-maxl; return 0; }
0 0
- codevs 1058 合唱队形
- 【codevs 1058】合唱队形
- codevs 1058 合唱队形 题解报告
- codevs 1058 合唱队形(DP)
- codevs 1058 合唱队形 (动态规划 & LIS)
- 1058 合唱队形
- Codevs 1058 合唱队形 ---2004年NOIP全国联赛提高组 dp
- 合唱队形
- 合唱队形
- 合唱队形
- 合唱队形
- 合唱队形
- 合唱队形
- 合唱队形
- 合唱队形
- 合唱队形
- 合唱队形
- 合唱队形
- 火狐浏览器 编码解码 Base64Encoder无法使用
- Python爬虫教程大全
- UIImage 切割
- C/C++学习(四)变态跳台阶
- 临时
- codevs 1058 合唱队形
- iOS跳转到指定页面,而不是简单的返回上一个页面
- 【bzoj3155】Preprefix Sum
- ssh远程连接Ubuntu
- 我的iOS学习历程 - UITableView的编辑
- WebGL实现HTML5贪吃蛇3D游戏
- Linux 非缓冲I/O与缓冲I/O
- { Cracking The Coding Interview: 150 programming Q&A } 5th edition Part I
- POJ 1426 Find The Multiple【dfs】