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...