1. 程式人生 > >[BZOJ2724][Violet 6]蒲公英

[BZOJ2724][Violet 6]蒲公英

center mem 集合 pro 一個 www src discuss 有一個

2724: [Violet 6]蒲公英

Time Limit: 40 Sec Memory Limit: 512 MB Submit: 2404 Solved: 825 [Submit][Status][Discuss]

Description

技術分享

Input

技術分享

修正一下

l = (l_0 + x - 1) mod n + 1, r = (r_0 + x - 1) mod n + 1

Output

技術分享

Sample Input

6 3
1 2 3 2 1 2
1 5
3 6
1 5

Sample Output

1
2
1

HINT

技術分享

修正下:

n <= 40000, m <= 50000

設$mode\left(A\right)$表示集合$A$的眾數 那麽有一個顯然的定理為$mode\left(A\cup B\right)\in A\cup\left\{mode\left(B\right)\right\}$ 需要離散化,時間復雜度$O\left(nlogn\right)$ 分為$x$塊 設$f[i][j]$為第i塊到第j塊的眾數,通過枚舉$i$來求,時間復雜度為$O\left(xn\right)$ 對於每個詢問$\left(l,r\right)$,把中間的整塊裏面的眾數用$f$數組得到,然後邊緣的暴力判斷出現次數 而出現次數的求法為:對每個權值開一個vector記錄出現位置,在裏面二分 所以單次詢問的復雜度為$O\left(\frac{nlogn}{x}\right)$ 那麽總時間復雜度為$O\left(nlogn\right)+O\left(xn\right)+O\left(\frac{mnlogn}{x}\right) \ge O\left(nlogn+n\sqrt{mlogn}\right)$ 當且僅當$x=\sqrt{mlogn}$時等號成立

[BZOJ2724][Violet 6]蒲公英