資料結構最佳化DP

wscqwq發表於2024-07-29

51nod-基因匹配+luogu-【模板】最長公共子序列

本題重在轉化。由於最長公共子序列的下標是一個最長上升子序列,所以我們可以考慮把數字對映成下標,有多個就要倒序把每個值對映成多個不同的值,因為一個數有多種下標都是可取的。

51nod-3976-最長序列

與基本問題相同,但是需要根據長度插入新的值,而且只能使用樹狀陣列/線段樹進行最佳化。注意考慮只記錄一種是否會影響答案(根據傳遞性所以“否”)。

51nod-3986-免費的餡餅

按照(位置,時間)建立座標系。首先利用參照物轉變為人向上走,人任意位置不重要,因為我們求的就是到達每個點的答案,初始位置任意說明每個點都是可達的。然後需要把可以到達當前點的位置用不等式表示出來(即向上走的步數的兩倍 \(\ge\) 左右(正負)),然後作圖(簡單,因為經過當前點,再描出一個點就可以作圖了)發現圖形對稱,而且同時滿足就可以保證 \(y\) 小於當前點。就轉化成了經典的二維偏序問題。

51nod-3928方伯伯的玉米田

首先需要發現每次操作右端點都是 \(n\),這樣就只需要考慮相鄰玉米的大小關係。於是每次考慮最後一個玉米 \(i\) 和上一個玉米 \(a\) 是誰,就是刪去了 \([a+1,i-1]\),直接比較長高後與上一個玉米。發現是個三維偏序,一維列舉,兩維用二維樹狀陣列。

相關文章