cdq分治是一種時間魔術。
在正常的世界中,韶華易逝,時間總是在向前流逝著。只有過去和現在能決定未來,未來無法反過來決定現在和過去,不然就會發生世界線錯亂的現象。
cdq分治同樣順應著時間向前流逝這條規律。
總共有n秒,每秒鐘都發生了一起事件。
cdq分治的操作如下。
看看著名的三維偏序問題。
我們對第一維cdq分治,對第二維進行排序,對第3維進行bit線段樹維護。
其實,就是cdq分治套乙個二維偏序關係問題!
看幾個栗子
cf669e:little artem and time machine
題意:乙個multiset,需要支援以下操作,1.到\(t\)時刻,插入\(x\) 2.在\(t\)時刻刪除\(x\) 3.查詢\(t\)時刻\(x\)的個數.
做法:
code:喵
cf762e:radio stations
題意:在座標軸上有很多個廣播站,第i個,位置為x[i],覆蓋半徑為r[i],頻率為f[i],如果兩個站\(i,j(i,都在對方半徑內,且頻率差的絕對值不超過k,那麼就把這樣的\((i,j)\)成為bad,問有多少個bad的pair.
做法:
code:戳
看了考慮清楚按哪一維cdq分治,能夠使得算答案比較方便,很重要啊
cf848c:goodbye souvenir
題意:給序列a
,有一些。操作為為兩種,操作1:a[p]=x
,操作2:區間查詢[l,r]
,查詢此區間內,每個元素,最後一次出現的位置 - 第一次出線的位置。
做法:
code:喵
哇,我的這種寫法看來有點慢啊。
目前,我的寫法是,先算\([l,mid]\)對\([mid+1,r]\)的貢獻,再遞迴地處理他們。但先遞迴搞\([l,mid]\),\([mid+1,r]\)。遞迴的時候順便完成對第二維的歸併排序。再算\([l,mid]\)對\([mid+1,r]\)的貢獻似乎更好一點。
女人都看一下吧
愚笨的 女人打擊男人 聰明的女人激勵男人。愚笨的女人盯著男人的缺點,老是生氣 聰明的女人欣賞男人的優點,很是 開心。愚笨的女人不分場合與男人爭吵,弄得男人很沒面子 聰明的女人在外人面前給足男人面子,私下再對男人嚴加管教。愚笨的女人貶低男人 她忘了 貶低男人就是貶低自己 聰明的女人讚賞男人 她明白 讚...
2023年總結一下吧
2021年了,時間真快,今天閒來無事,對過去的2020年做個簡單的總結 1 2020年,年初和年末,都被疫情干擾了,沒辦法,小小的病毒,把人類幹得一團糟,希望疫苗的出現,可以為人類挽回顏面。2 2020年復工初始,豪言 換一台漢蘭達,沒有實現,失敗。3 39歲的 老年人 寫了一年的 說輕鬆呢?還是累...
認識一下偽 吧
今天我希望在畫家的路上走走,驚嘆於css的神奇之餘,發現我對類似 的東西好陌生,於是乎,讓我們來認識一下它吧。first line 用於向文字的首行設定特殊樣式 first letter 用於向文字的首字母設定特殊樣式 font color background margin padding bor...