洛谷 P1091 合唱队形
題目描述
N位同學站成一排,音樂老師要請其中的(N-K)位同學出列,使得剩下的K位同學排成合唱隊形。
合唱隊形是指這樣的一種隊形:設K位同學從左到右依次編號為1,2…,K,他們的身高分別為T1,T2,…,TK, 則他們的身高滿足T1<…Ti+1>…>TK(1<=i<=K)。
你的任務是,已知所有N位同學的身高,計算最少需要幾位同學出列,可以使得剩下的同學排成合唱隊形。
輸入輸出格式
輸入格式:
輸入文件chorus.in的第一行是一個整數N(2<=N<=100),表示同學的總數。第一行有n個整數,用空格分隔,第i個整數Ti(130<=Ti<=230)是第i位同學的身高(厘米)。
輸出格式:
輸出文件chorus.out包括一行,這一行只包含一個整數,就是最少需要幾位同學出列。
輸入輸出樣例
輸入樣例#1:
8
186 186 150 200 160 130 197 220
輸出樣例#1:
4
說明
對于50%的數據,保證有n<=20;
對于全部的數據,保證有n<=100。
做法很簡單,依次枚舉所有人為最中間的人 求一下第一個人到這個人的最長上升子序列(LIS),在反著求一下這個人到最后一個人的LIS相加為此種情況的最長隊列,把所有人全枚舉一次找出所有情況的最長隊列,用總人數減去最長隊列即為最少出列同學。
PS:因為一次dp就能求出所有的LIS值,所以時間復雜度不會爆。
code:
轉載于:https://www.cnblogs.com/Menteur-Hxy/p/9248042.html
總結
以上是生活随笔為你收集整理的洛谷 P1091 合唱队形的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python学习之路day02
- 下一篇: 导航栏下拉至一定高度后固定在顶部的特效