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...