洛谷P1972(莫隊演算法)

2021-08-20 10:52:16 字數 1059 閱讀 5418

hh 有一串由各種漂亮的貝殼組成的項鍊。hh 相信不同的貝殼會帶來好運,所以每次散步完後,他都會隨意取出一段貝殼,思考它們所表達的含義。hh 不斷地收集新的貝殼,因此,他的項鍊變得越來越長。有一天,他突然提出了乙個問題:某一段貝殼中,包含了多少種不同的貝殼?這個問題很難回答……因為項鍊實在是太長了。於是,他只好求助睿智的你,來解決這個問題。

輸入格式:

第一行:乙個整數n,表示項鍊的長度。

第二行:n 個整數,表示依次表示項鍊中貝殼的編號(編號為0 到1000000 之間的整數)。

第三行:乙個整數m,表示hh 詢問的個數。

接下來m 行:每行兩個整數,l 和r(1 ≤ l ≤ r ≤ n),表示詢問的區間。

輸出格式:

m 行,每行乙個整數,依次表示詢問對應的答案。

輸入輸出樣例

輸入樣例#1:

複製

6

1 2 3 4 3 5

31 2

3 52 6

輸出樣例#1:

複製

2

24

資料範圍:

對於100%的資料,n <= 500000,m <= 200000。

思路:通過這道題學習了一種新的演算法,莫隊演算法。它在解決離線處理不可修改的區間時有很大優勢,複雜度n根號n,且常數比較小。但這道題後來資料加強了,得了80分,但莫隊仍是處理該類問題的有力**(好寫。。。)。

上**:

#includeusing namespace std;

typedef struct

node;

node q[200010];

int a[500010];

int pos[500010];

int ans[200010];

int sum=0;

bool cmp(node x,node y)

while(rq[i].rb)

ans[q[i].ind]=sum;

} for(int i=1;i<=m;i++)

return 0;

}

洛谷 1972 莫隊

傳送門 其實這道題的標答應該是樹狀陣列或者線段樹吧,如果我沒記錯的話曾經是做過類似題目的,然而,然而,好吧開始正題,這道題目我選擇的是莫隊演算法,引用一下某大犇的話 暴力出奇蹟,對拍保平安 先來討論一下莫隊演算法的適用條件 莫隊演算法的核心思想其實就是通過調整暴力的順序來優雅的暴力,首先把所有詢問按...

洛谷 1972 莫隊

洛谷 1972 莫隊演算法 傳送門其實這道題的標答應該是樹狀陣列或者線段樹吧,如果我沒記錯的話曾經是做過類似題目的,然而,然而,好吧開始正題,這道題目我選擇的是莫隊演算法,引用一下某大犇的話 暴力出奇蹟,對拍保平安 先來討論一下莫隊演算法的適用條件 莫隊演算法的核心思想其實就是通過調整暴力的順序來優...

離線樹狀陣列 洛谷P1972

傳送門 離線的題目,並且是求區間問題。我們就離線樹狀陣列吧。線段樹也是可以的,這題莫隊70分,分塊是和莫隊一樣的,就沒寫,估計也就70分。我們來分析一下這個題目吧。詢問一段區間的種類數,並且沒有更新操作。我們就分析一下怎麼離線。五分鐘後 好了,經過分析可知,我們按詢問區間的右端點排序,這樣,所有詢問...