例題:luogu p1972 [sdoi2009]hh的項鍊
無hh 有一串由各種漂亮的貝殼組成的項鍊。hh 相信不同的貝殼會帶來好運,所以每次散步完後,他都會隨意取出一段貝殼,思考它們所表達的含義。hh 不斷地收集新的貝殼,因此,他的項鍊變得越來越長。有一天,他突然提出了乙個問題:某一段貝殼中,包含了多少種不同的貝殼?這個問題很難回答……因為項鍊實在是太長了。於是,他只好求助睿智的你,來解決這個問題。
輸入格式:
第一行:乙個整數n,表示項鍊的長度。
第二行:n 個整數,表示依次表示項鍊中貝殼的編號(編號為0 到1000000 之間的整數)。
第三行:乙個整數m,表示hh 詢問的個數。
接下來m 行:每行兩個整數,l 和r(1 ≤ l ≤ r ≤ n),表示詢問的區間。
輸出格式:
m 行,每行乙個整數,依次表示詢問對應的答案。
輸入樣例#1:
61 2 3 4 3 5
31 2
3 52 6
輸出樣例#1:
224
資料範圍:
對於100%的資料,n <= 50000,m <= 200000。
莫隊真是好玩orz,存一下模板ovo
1 #include 2 #include 3 #include 4 #include 5#define maxn 50010
6#define maxm 200005
7using
namespace
std;
8int
a[maxn],cor[maxn],ans[maxn];
9struct
qq[maxm];
12int
n,m,block,cnt;
13int
comp(q a,q b)
17void del(int
x) 21
void add(int
x) 25
void
work() 34}
35int
main()
45 sort(q+1,q+1+m,comp);
46work();
47for(int i=1;i<=m;i++) printf("
%d\n
",ans[i]);
48return0;
49 }
處理區間問題之樹狀陣列與莫隊演算法
感覺我直到前兩天才算是真正學會用樹狀陣列啊囧。有一類離線的區間詢問問題,可以有以下解法 我暫時會這麼多 離線 樹狀陣列 線段樹 莫隊演算法 線段樹先不說了,好久沒寫過了,而且本文的標題是樹狀陣列與莫隊囧。用樹狀陣列的關鍵在於,每次插入乙個點或者刪除乙個點要維護什麼東西,一般是插入右端點刪除左端點,維...
莫隊演算法 區間眾數出現次數
2020.5.19 昨天學完莫隊之後重寫了一遍mcpc19的那一道區間眾數的,發現了幾個可以改進的點。乙個是離散化,港真我不知道原題是怎麼回事兒,上了離散化,後來無論是d query還是路邊的蒲公英好像完全沒必要上離散化,畢竟是1e5個數字,開個陣列記錄下就行了,所以這部分刪掉,然後模擬一下我們查詢...
優雅的區間問題暴力 莫隊演算法
對dalao口中可以 o n 區間內絕大部分無修改離線問題的莫隊演算法,一直處於 好騎 的狀態,最近終於找到了學習的機會,其實感覺,這著實是乙個優雅的暴力。莫隊演算法的大前提,是可以利用已知的 l,r 內的答案,直接得到 l,r 1 l 1,r l 1,r l,r 1 上的答案。以下內容預設上述轉移...