莫隊 小B的詢問

2021-08-28 17:20:15 字數 506 閱讀 7805

莫隊經典例題

這題詢問每一種數字數量的平方和,那麼我們在左移或右移的時候記錄一下就好了,當每一種數字的種類數加1或減1的時候,我們需要減去以前這個數對答案的影響,加上現在對答案的影響。

假設原來數字a的種類數為k,如今又加入乙個a,那麼先ans-=k2,然後ans+=(k+1)2.,刪除同理。

#include#include#include#include#includeusing namespace std;

const int maxn=5e4+77;

int b[maxn],t[maxn],n,m,k,len;;

long long ans[maxn],s;

struct node

a[maxn];

bool cmp(node a,node b)

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

return 0;

}

洛谷小B的詢問(莫隊)

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。...

BZOJ3781 小B的詢問 莫隊

題目 有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l.r 求sigma c i 2 的值,其中i的值從1到k,其中c i 表示數字i在 l.r 中的重複次數。思路 裸的莫隊吧。直接開陣列 c 暴力維護每個數出現的次數,區間轉移的時候如果假如加入乙個數 k,維護平方和...

洛谷2709 小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的序列。接下來的m行,每行兩個整...