記錄一個(gè)簡單的分塊題目(https://www.acwing.com/problem/content/251/)
區(qū)間眾數(shù),不帶修改,強(qiáng)制在線(否則可以莫隊(duì))。
分塊,預(yù)處理任意2個(gè)大塊之間的眾數(shù)(枚舉左端點(diǎn),n*sqrt(n))。詢問[l,r]中的眾數(shù)肯定是大塊idl+1~idr-1的眾數(shù)、或者小塊中的某個(gè)數(shù)。
對(duì)于這sqrt(n)個(gè)候選答案,需要統(tǒng)計(jì)其在詢問區(qū)間[l,r]內(nèi)的出現(xiàn)次數(shù),1個(gè)做法是用adj[x]記錄x的所有出現(xiàn)位置,那么x在[l,r]內(nèi)的出現(xiàn)次數(shù)就是:
upper_bound(adj[x].begin(), adj[x].end(), r) - lower_bound(adj[x].begin(), adj[x].end(), l)
代碼如下
https://pasteme.cn/68767
待會(huì)視頻更新,更詳細(xì)
標(biāo)簽: