cugb 1009 合唱隊形 (子串行)

2021-05-27 12:41:38 字數 381 閱讀 2078

昨天看了好長時間還是沒思路,看了別人的思路卻沒看懂,早上忍不住就問了老大一下(xy),嘿嘿,「因為求之後 列舉的是以某個數為頂點 左右兩邊最長的序列」,

一語驚醒夢中人啊!還是我太笨呢?反正現在會了。。。。

第一次,求以a[i]為結束點的最長上公升子串行,

第二次,求以a[i]為起始點的最長下降子串行,

這兩個都求出來後,相加,那麼d[i]裡儲存的就是每乙個a[i]向兩邊都降的最長序列,就是某個數前邊最長的公升,後邊最長的降,但要注意,a[i]在公升序時算了一次,降序裡又算了一次,故實際長度應減一,恩,就是這了。。。

#includeint main()

dp[n-1]=1;

for(i=n-2;i>=0;i--)

for(i=0;i

合唱隊形 最長上公升子串行變形

一 思路 感覺自己好笨 雖然知道是求兩次最長上公升子串行,一邊上公升,一邊下降 我愣是理解成了,寫兩個,都是順序來,乙個是求順序的最長上公升 乙個是順序的最長下降 怎麼除錯都是20 40個得分點 鬱悶了求兩次 成開口向下的拋物線 順序求上公升 逆序求上公升 然後求max aup i areverse...

演算法 合唱隊形(最大上公升子串行,線性DP)

有乙個佇列,下標從1開始儲存。用f i 代表i點結尾的最大上公升子串行的長度。採用遞迴的思想,從隊的最左邊開始,由於自身,所以以最左邊一點結尾的最大上公升子串行為1,故f 1 1。以第二點結尾的最大上公升子串行當w 1 w 2 時,f 2 max f 2 f 1 1 f 1 1 代表的是以1結尾的最...

百煉2711 合唱隊形(最長上公升子串行)

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