CF1404C:Fixed Point Removal(离线)(树状数组二分)
生活随笔
收集整理的這篇文章主要介紹了
CF1404C:Fixed Point Removal(离线)(树状数组二分)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
解析
寫了不少線段樹上二分,原來樹狀數組上也是可以二分的
首先如果ai>ia_i>iai?>i,那必然無法刪除,下面只考慮ai<=ia_i<=iai?<=i的情況
本題試圖離線不難想到,但我一開始總是按照刻板思維嘗試按序移動左端點,結果根本沒法做…
反過來想,移動右端點就可做多了
設fif_ifi?表示當前右端點為r的情況下,[i,r]最多可以刪掉的數量
那么我們當把r移動到r+1時,只有fi>=i?aif_i>=i-a_ifi?>=i?ai?時才會對fif_ifi?產生1的貢獻
不難發現這個f是單調不升的,所以符合上面那個條件的f應該是一段前綴,可以利用二分求出
然后就是簡單的對f區間+1,用樹狀數組維護即可
總結
以上是生活随笔為你收集整理的CF1404C:Fixed Point Removal(离线)(树状数组二分)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 模板:树状数组二分
- 下一篇: 欧洲车企电动化转型受困 开始纷纷求助中国