莫隊演算法 P1972 區間不同元素的個數

2021-09-25 04:53:15 字數 1167 閱讀 2744

就是區間不同值的個數。直接莫隊模板。

#include

using

namespace std;

typedef

long

long ll;

//由塊號尋找第乙個塊元素的下標

#define ll(x) ((x-1)*len+1)

const

int maxn=

1<<20;

struct node

q[maxn]

;int pos[maxn]

;ll ans[maxn]

;ll flag[maxn]

;//儲存當前區間字首和的個數

int a[maxn]

;bool

cmp(node a, node b)

//bool cmp(node a, node b)

////

// return pos[a.l]//}

int n, m, k, len;

int l=

1, r=0;

ll ans=0;

void

add(

int x)

}void

del(

int x)

}int

main()

scanf

("%d"

,&m)

;for

(int i=

1;i<=m;i++

)sort

(q+1

, q+

1+m, cmp)

; flag[0]

=1;//為了統計a[i]=k

for(

int i=

1;i<=m;i++

)while

(l>q[i]

.l)while

(r.r)while

(r>q[i]

.r) ans[q[i]

.k]=ans;

}for

(int i=

1;i<=m;i++

)return0;

}

洛谷P1972(莫隊演算法)

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

P1972 SDOI2009 HH的項鍊(莫隊)

給你長度為n的一組數,每次詢問區間有多少個不同的數。n 100000 m 100000。聽說暴力能過,但是有點不科學,於是我打了乙個莫隊。莫隊思想就是把左區間分塊,然後暴力,這樣就可以優化到osqrt o include include include include include define ...

演算法5 7 區間檢索

間隔搜尋問題給出了一系列的範圍,而測試的時間間隔,尋找和測試間隔交叉間隔。為了解決問題,須要專門編寫乙個類,這個類的介面例如以下 public inte ce intervalst,value 每乙個節點中有兩個值。第乙個值是區間的起點和終點,第二個值是該節點以及子節點中最大的區間終點。為了簡化問題...