time limit: 10 sec
memory limit: 162 mb
submit: 1732
solved: 745 [
submit][
status][
discuss]
現在我們有乙個長度為n的整數序列a。但是它太不好看了,於是我們希望把它變成乙個單調嚴格上公升的序列。
但是不希望改變過多的數,也不希望改變的幅度太大。
第一行包含乙個數n,接下來n個整數按順序描述每一項的鍵值。n<=35000,保證所有數列是隨機的
第一行乙個整數表示最少需要改變多少個數。 第二行乙個整數,表示在改變的數最少的情況下,每個數改變
的絕對值之和的最小值。
45 2 3 514
第一問就不說了,lis水題。
第二問用f[i]表示前i個的最少花費,轉移就從滿足條件:從以a[i]結尾的lis序列長度-1的j轉移過來。
小技巧:鄰接表存每個合法的j,然後列舉每個轉移。
可以易證:如果從j轉移到i的話,那麼中間一定有乙個k∈
[j,i
) ,使得jk
的高度都是a[
j],k+1
−>
i 的高度都是
i ,花費是最優的。
bzoj 1049 數字序列 dp
給定乙個長度為n的整數序列.在改變的數最小的和改變的幅度最小的前提下把它變成乙個單調嚴格上公升的序列.求改變的最小的數和這個幅度。貌似以前考試考過這道題 其實這道題就是兩道題拼一塊的 我們首先考慮第一問 這是乙個經典模型,我們有 當有 i j leq a i a j a i 和 a j 不用更改 i...
bzoj 1049 數字序列
首先將最長上公升子串行轉化為不下降,做出第一問。由於是隨機資料,感覺可以轉移到每個數的數個數不會太多,所以暴力就行了 然後有乙個性質,如果從j轉移到i的話,那麼中間一定有乙個k k j k 開始wa了好幾發,問題分別是 1 dp i 維護的是所有數都變成小於等於i的值的答案,而最優解不一定是這樣。用...
bzoj1049 HAOI2006 數字序列
設f i 為以i開頭的最長上公升序列的長度,第乙個元素a i 必須滿足f i m,第x個元素為a y 則第 x 1 個元素a z 需要滿足的條件是a z a y 且f z f y 1 這位的題解很詳細 const int n 35010 struct edge edge int to,edge ne...