過了幾個月,又回來了,3.7 之前的懶得補了。
3.7
P2487 [SDOI2011] 攔截導彈
最近在學 CDQ。花了我好久除錯。
CDQ 最佳化 DP 模板。
將轉移條件轉化成三維偏序。在 CDQ 中求。至於每個點在最長的二維最長升子序列的出現次數,多開一個陣列 \(f[0/1][i]\) 存,轉移還是使用樹狀陣列順帶做了。\(0/1\),表示以此點為開頭或結尾。
最後如果 \(dp[0][i] + dp[1][i] = len + 1\) 則這個點答案為 \(f[0][i] * f[1][i] / sum\)。
P3834 可持久化線段樹 2
順帶用整體二分做了一個板子題。感覺這個演算法好 NB。
P4093 [HEOI2016/TJOI2016] 序列
一開始連題都看錯了。描述不清的題面,SM 的出題人。或許是我是個 SB。
開了題解才明白題目。是我大意了。
也是一道很板的 CDQ 最佳化 DP。但以後一定要注意,轉移時是 dp[a[i].id]
而不是 dp[i]
。(-1h。
P3364 Cool loves touli
板子 +1。
注意開 long long
,然後再離散化。樹狀陣列與離散化陣列大小開 \(3 \times N\)。我在這裡 WA 了一發。
P4390 [BalkanOI2007] Mokia 摩基亞
簡單板子。將查詢分為四個點每次求 0,0 到 x,y 的一個矩形中的總權值。
相當於求 \(x_i \le x_j \land y_i \le y_j \land t_i \le t_j\) 的 \(a_i\) 總和。三維偏序,可以使用 CDQ 維護它。
注意樹狀陣列上界一定要開大,不然會少加上數!