題意:每次詢問乙個區間裡的數是否各不相同
顯然,當乙個區間裡的數各不相同時,它們的種數就是區間的長度
莫隊可以快速地求出區間的顏色種數,因此強制離線計算即可
#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乙個很正常的思路就是對於每個區間都去判斷,但我們不妨換種思路,先預處理出對於每個位置符合條件的最右位置,然後在輸入範圍時就可...