P2709 小B的詢問 莫隊

2022-05-20 23:00:38 字數 751 閱讀 4208

題面只要能想出\(o(1)\)的方式轉移\([l,r]\),莫隊就不難了。此題求區間\(\sum_^kcnt[i]^2\),那我們就\(o(1)\)更新就好了,先減去原來的貢獻,更新cnt再加上現在的貢獻,這樣就更新完了。

注意:莫隊小心初始化,直接l=0,r=0等可能會炸。

#include #include #include #define maxn 50005

using namespace std;

int n,m,k,a[maxn],block;

int cnt[maxn],sum,ans[maxn];

struct nod q[maxn];

inline bool cmp(nod a, nod b)

inline int my_sqr(int x)

inline int read()

inline void add(int x)

inline void del(int x)

int main()

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

int l=1,r=1;

sum=1;cnt[a[1]]=1;

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

for(int i=1;i<=m;++i) printf("%d\n", ans[i]);

return 0;

}

P2709 小B的詢問 莫隊

題目描述 小b有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l.r 求sigma c i 2 的值,其中i的值從1到k,其中c i 表示數字i在 l.r 中的重複次數。小b請你幫助他回答詢問。輸入輸出格式 輸入格式 第一行,三個整數n m k。第二行,n個整數,表示小...

P2709 小B的詢問 莫隊板子

題目描述 小b有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l r 求sigma c i 2 的值,其中i的值從1到k,其中c i 表示數字i在 l r 中的重複次數。小b請你幫助他回答詢問。輸入格式 第一行,三個整數n m k。第二行,n個整數,表示小b的序列。接下...

P2709 小B的詢問 莫隊演算法

莫隊演算法被稱為優雅的暴力,是一種 毒瘤暴力的 區間操作演算法。初學莫隊,記錄一下思想。對於多個區間查詢 l,r 這類問題,可以離線操作,常規做法還有對左區間或者右區間從小到大排序,讓左指標或者右指標只走一遍,有效降低時間複雜度。但是遇到 1,1000000 2,3 3,1000000 4,5 5,...