nowcoder提高組四 滅蟲

2021-08-28 19:08:24 字數 438 閱讀 3187

題意:3000個在數軸上的點,對於每個點可以選擇這個點向左延伸li長度的線段,或者這個點向右延伸ri長度的線段,問選擇的方法使得最終覆蓋的數軸長度最長,輸入均在int以內。

乙個非常巧妙的dp題。

首先這一類題目有重複的線段長度統計(或者是樹上的可以相交的路徑方案統計)或者其他內容有乙個比較自然的做法:

就是把每一段線段保留一段字首或者字尾,將限制轉化為最大值,然後要保證所有的線段不相交。

這個題首先就要利用這個思想。

然後我們按照pi(點的位置)從小到大排序dp,發現我們不能處理的只有 j < i l[i] < p[j] < p[i] < r[j] 的情況,我們發現這連成了一條完整的線段,我們直接把這個線段當作整體轉移即可,可以證明,每乙個這樣的線段要麼被直接轉移到,要麼左右端點由上面的線段確定。 所以這樣的dp一定包含最優值。 利用字首,字尾max維護一下可以做到 o(n^2)

nowcoder提高組2題解

化一下試子就ok include includeinline long long read while c 9 c 0 x x 10 c 0 c getchar return x f long long n long long a 100007 long long sum 100007 long l...

Nowcoder 提高組練習賽 R7

nowcoder 提高組練習賽 r7 中間空了兩場,因為實在是太難了.第五場的第二題好像還比較可做,是乙個最小生成樹的結論題,注意到 2 i 可以認為是二進位制下的數,即使把比它小的所有 2 x 全加起來也還是比他小,這一點做題的時候可以用一下.第六場的第一題是一道很奇怪的題目,給圖上的每條邊賦乙個...

提高組(計數)

題目鏈結 類題 氣泡排序 求長度為 n 的排列中滿足最長下降子串行長度不超過 2 且符合 p x y 的排列數。n le 10 7,t le 10 6 題意轉化 不存在三個點,使得左邊的點比中間大,右邊的點比中間小。我們要知道乙個 trick 從大到小 從小到大列舉數,嘗試將其插入當前排列,並使之合...