莫隊經典例題
這題詢問每一種數字數量的平方和,那麼我們在左移或右移的時候記錄一下就好了,當每一種數字的種類數加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行,每行兩個整...