1. 程式人生 > >【20181103T1】地球發動機【dp優化】

【20181103T1】地球發動機【dp優化】

題面

一眼dp

\(f_i\)表示前\(i\)個且\(i\)必須選的最大功率

\(f _i= max_{1 \leq j < i,A_i - A_j > X_j} \{f_j \}+p_i\)

下面的條件

\(A_i - A_j > X_j\)

相當於

\(X_j + A_j < A_i\)

\(X_j + A_j +1 \leq A_i\)

\(g(i)= X_i +A_i +1\)

發現對於一個\(i\)來說\(g(i)\)是確定的

那我們可以用一個數據結構來維護

考場上用的樹狀陣列,需要先預處理出\(g(i)\)然後離散化

複雜度\(O(NlogN)\)

和暴力\(N^2\)對了30min竟然沒問題

造了個大資料發現輸出INF……檢查發現樹狀陣列查詢的返回值沒開long long,好險啊

實際上不需要資料結構,只需要對於每臺機器二分一下影響不到的最後的位置,然後倒著DP就可以了

程式碼