洛谷P1091 合唱隊形

2021-10-23 16:24:17 字數 685 閱讀 9183

這是一道練習dp的無聊 經典題目

分析

讀完題目,很明顯,最後的合唱隊形是乙個遞增序列加上乙個遞減序列。那麼,我們可以先列舉中間最高的那個人,接著對他的左邊求最長上公升序列,對右邊求最長下降序列,總的時間複雜度為o(n³),比較危險 。如何節省時間呢?只需要先求好最長上公升dp1[1…n]和最長下降dp2[1…n],然後再列舉中間最高的那個同學,每一種合唱隊形的長度為dp1[i]+dp2[i]-1,打擂台取最大值ans那麼答案就為n-ans。這樣做的時間複雜度為o(n²)。

相信dalao看完分析就不用看本蒟蒻的**了

#include

using

namespace std;

const

int n=

2010

;int h[n]

,f[n]

,g[n]

;int n,ans;

intmain()

for(

int i=n;i;i--

)for

(int i=

1;i<=n;i++

) ans=

max(ans,f[i]

+g[i]-1

);cout

}

做完的可以看看這道題

洛谷 P1091 合唱隊形

n位同學站成一排,老師要請其中的 n k 位同學出列,使得剩下的k位同學排成合唱隊形。合唱隊形是指這樣的一種隊形 設k位同學從左到右依次編號為1,2 k,他們的身高分別為t1,t2,tk,則他們的身高滿足t1 ti 1 tk 1 i k 你的任務是,已知所有n位同學的身高,計算最少需要幾位同學出列,...

洛谷 P1091 合唱隊形

p1091 合唱隊形 2k 通過 4.8k 提交 題目提供者洛谷onlinejudge 標籤 noip提高組 2004 雲端評測 難度 普及 提高 提交 討論 題解 最新討論 描述是啥玩意?不能加檔案讀 參考,絕對ac,fighting 動 參考 資料太大了 n 1000 題目描述 n位同學站成一排...

洛谷P1091合唱隊形

n位同學站成一排,老師要請其中的 n k 位同學出列,使得剩下的k位同學排成合唱隊形。合唱隊形是指這樣的一種隊形 設k位同學從左到右依次編號為1,2 k,他們的身高分別為t1,t2,tk,則他們的身高滿足t1 ti 1 tk 1 i k 你的任務是,已知所有n位同學的身高,計算最少需要幾位同學出列,...