洛谷p2709小b的詢問
void
add(
int x)
void
remove
(int x)
//這兩個函式都是用來處理l,r指標移動時對答案的貢獻,x是移走/來的點的id
for(
int i =
1; i <= m; i++
)//下面是預處理
int len =
sqrt
(n);..
.query[i]
.k =
(query[i]
.l -1)
/ len +1;
//k是指塊的id
//就這麼些~很簡單~
#include
#include
#include
using
namespace std;
const
int maxn =
50000+10
;struct query};
int n, m, k, a[maxn]
;query query[maxn]
;int ans0[maxn]
;int ans, cnt[maxn]
;void
add(
int x)
void
remove
(int x)
void
solve()
for(
int i =
1; i <= m; i++
)printf
("%d\n"
, ans0[i]);
}int
main()
洛谷P2709 小B的詢問 莫隊
按根下n分個塊,對詢問區間雙關鍵字排序,若不在乙個塊裡按左端點排序,若在按右端點排序,然後掃一遍統計答案 考慮每次移動指標後答案的改變 分為四種情況 分別是l,r指標在查詢區間的l和r的左邊還是右邊,都討論一下 每種情況該怎麼做在紙上畫畫就明白了。沒必要特意記 include include inc...
洛谷 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的序列。接下來的m行,每行兩個整...
洛谷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個整數...