腦洞 整體分塊 BSGS

2021-09-24 04:10:18 字數 593 閱讀 6354

ran 讓 ei 刷整體二分的題,並且丟給 ei 一道「zjoi2013」k大數查詢。

但是 ei 並不想寫整體二分。也不想寫資料結構。於是一拍腦門,就有了這個奇怪的想法。

大致思路:對於 c

cc 先離散化,然後考慮乙個類似 bsgs 的找答案的過程:將從大到小的 c

cc 分成 m

\sqrt m

m​段,按順序計算每個詢問的區間中有多少個數落在第 i

ii 段內的顏色中。該過程發生 m

mm 次修改和 θ(m

m)

\theta(m\sqrt m)

θ(mm​)

次詢問,我們不妨使用乙個塊狀陣列來維護,即可做到時間 θ(m

(n+m

))

\theta \left(m(\sqrt n + \sqrt m)\right)

θ(m(n​

+m​)

)。這是 giant step,接著 baby step 我們的做法幾乎是相同的,複雜度也一致。

對於這道例題而言無疑不算乙個時間複雜度很優秀的解,但是常數小,**不算難寫。如果遇到一些樹形結構無法維護的問題時,該思路就顯得有一定優勢了。(或許?)

開啟你的腦洞

我的大學是在北京師範大學讀的,當時讀的乙個叫做 勵耘實驗班 的專業 現在已經取消了 美其名曰第一年進行通識教育,第二年選專業。我最終選擇了計算機專業,並且有幸和一群不同專業的室友一起生活了四年。其中乙個室友選了 數字 專業,他在專業學習過程中,需要每天看各種電影,分析各種電影片段的拍攝手法。那個時候...

Javascript的腦洞(一)

無窮大的數 var a 12 0 if a infinity 既然js的變數實際都是某種引用 存放物件的位址 那麼a這個名字的背後可以存放任意東西,包括無窮大這個值。但是js在這裡直接違背了數學規律,讓0除的結果變成無窮大,真實腦洞大開!如果設計成nan值,也更好理解吧?undefined被定義 u...

腦洞系列 XJOJ 挖金礦

這個題目,在考場上我沒有做不出來,說實話,開始的時候,我都沒看出來這是個二分!這個題目因為資料範圍給的很難受 n m 而不是n m 所以我們在求每一列的字首和的時候,我們可以抽象成一維來做。我們設答案為ans,ans sum h sum為挖過的所有金礦的價值之和,h為挖過的金礦的個數 sum ans...