有乙個佇列,下標從1開始儲存。用f[i]代表i點結尾的最大上公升子串行的長度。
採用遞迴的思想,從隊的最左邊開始,由於自身,所以以最左邊一點結尾的最大上公升子串行為1,故f[1] = 1。以第二點結尾的最大上公升子串行當w[1] < w[2]時,f[2] = max(f[2], f[1] + 1)。f[1] + 1 代表的是以1結尾的最大上公升子串行加上當前這個點。
一般地,f[i] = max(f[i], f[j] + 1)
n位同學站成一排,**老師要請其中的(n-k)位同學出列,使得剩下的k位同學排成合唱隊形。for
(int i =
1; i <= n; i ++
)
合唱隊形是指這樣的一種隊形:設k位同學從左到右依次編號為1,2…,k,他們的身高分別為t1,t2,…,tk, 則他們的身高滿足t1<…ti+1>…>tk(1≤i≤k)。
你的任務是,已知所有n位同學的身高,計算最少需要幾位同學出列,可以使得剩下的同學排成合唱隊形。
輸入的第一行是乙個整數n,表示同學的總數。
第二行有n個整數,用空格分隔,第i個整數ti是第i位同學的身高(厘公尺)。
輸出包括一行,這一行只包含乙個整數,就是最少需要幾位同學出列。
2≤n≤100,
130≤ti≤230
8186 186 150 200 160 130 197 220
原題鏈結#include
using
namespace std;
int w[
110]
;int f[
110]
, g[
110]
;int
main()
for(
int i =
1; i <= n;
++i)
}for
(int i = n; i; i--)}
}int res =0;
for(
int i =
1; i <= n;
++i)
cout << n - res << endl;
return0;
}
線性dp 合唱隊形 最長上公升子串行模型
相關 線性dp 最長上公升子串行 模板題 最長上公升子串行模型 線性dp 怪盜基德的滑翔翼 最長上公升子串行模型 強相關 線性dp 登山 最長上公升子串行模型 482.合唱隊形 重點 線性dp lis問題 思路 本題為noip2004提高組原題。正反兩遍再求和 include include usi...
合唱隊形 最長上公升子串行變形
一 思路 感覺自己好笨 雖然知道是求兩次最長上公升子串行,一邊上公升,一邊下降 我愣是理解成了,寫兩個,都是順序來,乙個是求順序的最長上公升 乙個是順序的最長下降 怎麼除錯都是20 40個得分點 鬱悶了求兩次 成開口向下的拋物線 順序求上公升 逆序求上公升 然後求max aup i areverse...
百煉2711 合唱隊形(最長上公升子串行)
description n位同學站成一排,老師要請其中的 n k 位同學出列,使得剩下的k位同學不交換位置就能排成合唱隊形。合唱隊形是指這樣的一種隊形 設k位同學從左到右依次編號為1,2,k,他們的身高分別為t1,t2,tk,則他們的身高滿足t1 t2 ti ti ti 1 tk 1 i k 你的任...