因此這題和數列沒什麼關係數組
顯然對於每一個數答案是個單谷優化
直接三分,複雜度$O(nloga)$spa
然而這題其實不用三分,顯然答案只在x的最小正整數解和最大負整數解時獲得排序
$O(1)$可求,複雜度$O(n)$it
考場上在(數據刪除)打出"(數據刪除)"後想到的解法io
因爲這題最終構建出來的序列$a$和$b$都不單調,咱們不容易構造一個正確的排序方法保證拓撲序方法
那麼咱們能夠換一個思路,再也不一個一個加入新的數,而是把數插入已有序列im
那麼咱們把數對按照$b$排序數據
設目前數組爲$(10,2) (1,3) (2,5) (10,11)$ ($(a,b)$表示題中的$a,b$)co
咱們倒着掃排序後的數組,假設咱們當前在處理$(10,2)$
因爲$10$太大,$(10,2)$沒法放在$(1,3),(2,5)$以前,只能放在$(10,11)$以前
然而直接用$(10,11)$轉移$(10,2)$會致使丟失了$(1,3)(2,5)$兩個數對,他們顯然是能夠作貢獻的
可是咱們發現因爲咱們按照$b$排序,使得當前處理數對的$b$必定是最小的
因此跳過部分的貢獻即爲跳過部分全部$a<=b_{i}$的點對的權值和
即$dp_{i}$=$\max\limits _{b_{j}\geq a_{i}} (dp_{j}+\sum\limits _{k=i+1,a_{k}<=b_{i}}^{j-1}w_{k})$
把dp變成後綴max則有
$dp_{i}$=$ dp_{j}+\sum\limits _{k=i+1,a_{k}<=b_{i}}^{j-1}w_{k}$ $j$爲第一個$b_{j}\geq a_{i}$的點
主席樹優化一下
以全部特殊點爲起點跑最短路,同時維護最短路的起點是誰
而後枚舉全部邊,若是兩端點是從不一樣特殊點到達,則更新答案