time limit: 10 sec memory limit: 128 mb
submit: 942 solved: 635
小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行,每行兩個整數l、r。
m行,每行乙個整數,其中第i行的整數表示第i個詢問的答案。
6 4 3
1 3 2 1 1 3
1 42 6
3 55 6
對於全部的資料,1<=n、m、k<=50000
顯然就是一道裸莫隊,裸到不能再裸…我們可以稱其為,沒有穿衣服的莫隊演算法
/**
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
problem: 3781
user: cdqz_hhl
language: c++
result: accepted
time:1688 ms
memory:3060 kb
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****
****/
#include
#include
#include
#include
#include
#define ll long long
const int maxn=50005;
using namespace std;
int n,m,k,len;
int b[maxn];
long long cnt[maxn],final[maxn];
struct questionq[maxn];
bool cmp(const question& a,const question& b)
}int main()
solve();
for(register int i=1;i<=m;i++) printf("%lld\n",final[i]);
return
0;}
BZOJ3781 小B的詢問 莫隊
題目 有乙個序列,包含n個1 k之間的整數。他一共有m個詢問,每個詢問給定乙個區間 l.r 求sigma c i 2 的值,其中i的值從1到k,其中c i 表示數字i在 l.r 中的重複次數。思路 裸的莫隊吧。直接開陣列 c 暴力維護每個數出現的次數,區間轉移的時候如果假如加入乙個數 k,維護平方和...
BZOJ 3781 小B的詢問(莫隊演算法)
還能不能再裸點。include include include include include include include include include using namespace std typedef long long ll define rep i,n for int i 0 i ...
bzoj3781 小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...