ACWing 482 合唱隊形

2021-10-20 13:52:32 字數 1487 閱讀 6924

n

nn位同學站成一排,**老師要請其中的(n−

k)

(n-k)

(n−k

)位同學出列,使得剩下的k

kk位同學排成合唱隊形。合唱隊形是指這樣的一種隊形:設k

kk位同學從左到右依次編號為1,2

…,

k1, 2…,k

1,2…,k

,他們的身高分別為t1,

t2,…

,t

kt_1, t_2,…,t_k

t1​,t2

​,…,

tk​,則他們的身高滿足t

1<

>ti

+1

>

…>tk

,1≤i

≤k

t_1<…t_>…>t_k,1≤i≤k

t1​<

…​>ti

+1​>

…>tk

​,1≤

i≤k。你的任務是,已知所有n

nn位同學的身高,計算最少需要幾位同學出列,可以使得剩下的同學排成合唱隊形。

輸入格式:

輸入的第一行是乙個整數n

nn,表示同學的總數。第二行有n

nn個整數,用空格分隔,第i

ii個整數t

it_i

ti​是第i

ii位同學的身高(厘公尺)。

輸出格式:

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

資料範圍:

2 ≤n

≤100

2≤n≤100

2≤n≤10

0130≤t

i≤

230130≤t_i≤230

130≤ti

​≤23

0 本質上是求以每個位置結尾的最長上公升(下降)子串行。參考**如下:

#include

using

namespace std;

const

int n =

110;

int n;

int a[n]

;int f1[n]

, f2[n]

;int

main()

for(

int i = n; i >=

1; i--

)int res =0;

for(

int i =

1; i <= n; i++

) res =

max(res, f1[i]

+ f2[i]-1

);// 最後要返回的是出列的學生數

cout << n - res << endl;

return0;

}

時間複雜度o(n

2)

o(n^2)

o(n2

),空間o(n

)o(n)

o(n)

合唱隊形 DP

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

合唱隊形 dp

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

合唱隊形 NOIP

合唱隊形 noip time limit 1000ms memory limit 65536k description n位同學站成一排,老師要請其中的 n k 位同學出列,使得剩下的k位同學排成合唱隊形。合唱隊形是指這樣的一種隊形 設k位同學從左到右依次編號為1,2 k,他們的身高分別為t1,t2...