NOIP2004 合唱隊形題解

2021-07-04 06:21:12 字數 940 閱讀 1302

n位同學站成一排,**老師要請其中的(n-k)位同學出列,使得剩下的k位同學排成合唱隊形。

合唱隊形是指這樣的一種隊形:設k位同學從左到右依次編號為1, 2, …, k,他們的身高分別為t1, t2, …, tk,則他們的身高滿足t1 < t2 < … < ti , ti > ti+1 > … > tk (1 <= i <= k)。

你的任務是,已知所有n位同學的身高,計算最少需要幾位同學出列,可以使得剩下的同學排成合唱隊形。

輸入的第一行是乙個整數n(2 <= n <= 100),表示同學的總數。第一行有n個整數,用空格分隔,第i個整數ti(130 <= ti <= 230)是第i位同學的身高(厘公尺)。

輸出包括一行,這一行只包含乙個整數,就是最少需要幾位同學出列。

8 186 186 150 200 160 130 197 220

題目要求很像最長上公升子串行,因此可以用類似的方法:

用f(i)記錄1~i的最長上公升子串行

用g(i)記錄i~n的最長下降子串行 那麼a

ns=m

ax(1

<=

i<=n)

ac!!!

# include

# include

using

namespace

std;

int a[1001],f[1001],g[1001],n,ans;

void init()

void dp()

g[n]=1;

for (i=n-1;i>=1;i--)

ans=0;

for (i=1;i<=n;i++)

if (f[i]+g[i]-1>ans)

ans=f[i]+g[i]-1;

}void print()

int main()

冰凍三尺,非一日之寒

NOIP2004 合唱隊形

noip2004 合唱隊形 2017年7月31日 dp 最長不上公升子串行,最長不下降子串行 描述 description n位同學站成一排,老師要請其中的 n k 位同學出列,使得剩下的k位同學排成合唱隊形。合唱隊形是指這樣的一種隊形 設k位同學從左到右依次編號為1,2 k,他們的身高分別為t1,...

noip 2004 合唱隊形(dp)

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

noip2004 提高組 合唱隊形

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