【分塊】區間眾數


關於分塊求眾數可以看黃學長寫的蒲公英題解

鏈接:http://hzwer.com/3582.html

【題目大意】

總共有n個數,m個詢問,對於每個詢問[l,r]求出區間內眾數的出現次數

1<=n<=10000,1<=m<=20000

【做法】

我當時還不會莫隊只能用分塊來做......結果學長說這是莫隊模板題比較尷尬

首先先離散化處理一下【不然咋做我不會啊】

接着枚舉處理任意兩塊[x,y]間的眾數,具體做法是拿個數組記錄每個數出現過的次數

枚舉x,然后從x掃右掃一遍就可以求出[x,x+1到總塊數]的區間眾數

通過觀察可以發現在i到j之間,眾數一定為完整的塊中的眾數與不完整的塊中的每個數

所以我們需要快速求出不完整的塊中的每個數出現的次數

發現上面我們離散化了就好做了

對於每個數開個隊列/vector存每一次出現的位置,然后把區間的左端點右端點分別二分再相減就可以求出這個數在區間里出現的次數

【代碼】

見黃學長博客吧,可能只需要稍微改一下

(之前電腦屏幕滿了一怒之下把桌面上的所有代碼跟圖片都刪了......所以現在手上沒有代碼也懶得寫)

后天NOIP2016各位加油!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM