區間不同數個數

2022-04-19 17:26:28 字數 724 閱讀 1969

開坑...最近要把朱熹樹寫一下,就開個大坑來記錄我的腦洞吧》 <

給定乙個序列,給出一些對於某個區間[l,r]的詢問,求這個區間內不同數的個數.

int seq;

rangequery;

#define input classof

int n,m;

fon(i,n) seq[i]; ' '

fon(i,m) query[i]; '\n'

#define endinput endclassof

int seq;

#define output classof

fon(i,m) answerof(query[i]); '\n'

#define endoutput endclassof

10s跑n,m,numlim 1k的區間不同數個數統計怎麼也跑過了...

其實這個時間長度跑\(o(n^2)\)演算法沒有任何問題.

開個map來判重也可以吧...

還是薦hashmap.

從這裡開始需要一點腦子了.

將左端點按\(\sqrt\)大小分塊按塊排序,塊內按右端點排個序. 再處理就好了.

塊內右端點單調,顯然\(o(\sqrt)\)每次更新.

塊間也不會超過\(2\sqrt\).

這種分塊離線求值就是莫隊演算法(的改進版).

莫隊演算法可以處理非常多(離線)的題目.

SPOJ DQUERY (主席樹求區間不同數個數)

題意 找n個數中無修改的區間不同數個數 我們需要這麼想 從左向右新增一到主席樹上,新增的是該數字處在的位置 但是如果該數字前面出現過,就在此版本的主席樹上的前面出現的位置減一,接著才在此位置上添一 這樣查詢是按照右區間版本的主席樹來找 lef,rig 的數字 因為要將此區間每個不同的數都處在最後出現...

判斷區間內的素數個數

package method public class stest package method 編寫乙個有兩個執行緒的程式,第乙個執行緒用來計算2 100000之間的素數的個數,第二個執行緒用來計算100000 200000之間的素數的個數,最後輸出結果 author administrator ...

篩素數,求區間內素數個數

問題 1525 藍橋杯 演算法提高vip 找素數 時間限制 1sec 記憶體限制 128mb 提交 1179 解決 133 題目描述 給定區間 l,r 請計算區間中素數的個數。資料規模和約定 2 l r 2147483647 r l 1000000 輸入兩個數l和r。輸出一行,區間中素數的個數。樣例...