P6717

ImALAS發表於2024-04-16

神秘題,我現在還沒有理解這個東西的本質。

直接維護自然很寄,我們有兩種思路:

  • \(K\) 的限制轉化掉,用資料結構維護之。
  • 弱化貢獻,轉化為單點極值。

對於第二種思路,我進行了這些嘗試:

  • 轉化為 \(a_x\) 加上 \([x-K+1,x-1]\) 的最大值。
  • 二分答案。
  • 嘗試觀察一次操作後的影響。

想了很久不會 qwq。其實是沒有注意到經典演算法運用的條件。

第一種嘗試中沒法做的根本原因在於,不能維護修改。

進一步的,是不能維護刪除

這個時候思路就出來了。線段樹分治即可。\(\mathcal O((n + q)\log n\log q)\)

這個方法相對平凡,有沒有厲害做法?

dottle 的題解中說明了,按 \(K\) 分塊後答案一定包含某個段中的最大值。然而我並沒有想清楚這個演算法的本質,按 \(K\) 分塊在我看來只是為了探尋隱含的性質,畢竟直接在原序列上分析很難得到。但是 motivation 是什麼呢??!

相對來說 ღꦿ࿐ 大神的思路看起來更有跡可循。