P3901 數列找不同

2022-05-10 23:08:09 字數 726 閱讀 5800

題意:每次詢問乙個區間裡的數是否各不相同

顯然,當乙個區間裡的數各不相同時,它們的種數就是區間的長度

莫隊可以快速地求出區間的顏色種數,因此強制離線計算即可

#include using namespace std;

const int n = 100005;

int n, q, a[n], block, ans = 0, cnt[n], ans[n];

struct question q[n];

struct temp u[n];

void add(int x)

void del(int x)

template inline void read(t &t)

while(ch >= '0' && ch <= '9')

t *= m;

}bool cmp(const question &a, const question &b)

int main()

for(int i = 1; i <= q; i++)

sort(q + 1, q + q + 1, cmp);

int l = 0, r = 0;

for(int i = 1; i <= q; i++)

for(int i = 1; i <= q; i++)

return 0;

}

莫隊 P3901 數列找不同

現有數列a 1,a 2,cdots,a na1 a2 an q 個詢問 l i,r i li ri a a cdots,a ali ali 1 ari 是否互不相同 輸入格式 第1 行,2 個整數n,qn,q 第2 行,n 個整數a a cdots,a ali ali 1 ari q 行,每行2 個...

《洛谷P3901 數列找不同》

提供兩種解法。第一種 直接對詢問離線,然後莫隊分塊。我們用乙個陣列vis來統計每個數出現的次數,然後維護區間內出現次數超過2的數量即可。一開始加了個vis i max vis i 0 防負數操作還wa了,這樣其實有點違背統計思想了。author levil includeusing namespac...

洛谷 P3901 數列找不同 思維

傳送門 給出n nn個數,以及q qq組詢問,對於li ri l i r i li ri 中所有數是否都是不相同的,如果是,就輸出yes yesye s,否則輸出nono no乙個很正常的思路就是對於每個區間都去判斷,但我們不妨換種思路,先預處理出對於每個位置符合條件的最右位置,然後在輸入範圍時就可...