區間和 離散化

2021-10-19 12:17:33 字數 1128 閱讀 5848

802. 區間和

#include

#include

#include

using

namespace std ;

typedef pair<

int,

int> pii ;

// 定義二元組為 pii

int n, m ;

const

int n =

3e5+10;

int a[n]

, s[n]

;vector<

int> alls ;

// 儲存所有待離散化的下標

vector add, query ;

// add 為插入的元素; query 為查詢的元素

// 二分 求離散化後的對應陣列下標

intfind

(int x )

return r +1;

// 使對映後a的陣列下標從1開始

}int

main()

);// 插入 待插入元素的值

}for

(int i =

0; i < m; i++))

;// 插入 待查詢的值

}// 排序

sort

( alls.

begin()

, alls.

end())

;// 去重

alls.

erase

(unique

(alls.

begin()

, alls.

end())

, alls.

end())

;// 處理插入

for(

auto item : add )

// 求字首和

for(

int i =

1; i <= alls.

size()

; i++

) s[i]

= s[i-1]

+ a[i]

;// 處理查詢

for(

auto item : query )

return0;

}

離散化 區間和

假定有乙個無限長的數軸,數軸上每個座標上的數都是0。現在,我們首先進行 n 次操作,每次操作將某一位置x上的數加c。近下來,進行 m 次詢問,每個詢問包含兩個整數l和r,你需要求出在區間 l,r 之間的所有數的和。輸入格式 第一行包含兩個整數n和m。接下來 n 行,每行包含兩個整數x和c。再接下裡 ...

區間和 離散化

假定有乙個無限長的數軸,數軸上每個座標上的數都是0。現在,我們首先進行 n 次操作,每次操作將某一位置x上的數加c。接下來,進行 m 次詢問,每個詢問包含兩個整數l和r,你需要求出在區間 l,r 之間的所有數的和。輸入格式 第一行包含兩個整數n和m。接下來 n 行,每行包含兩個整數x和c。再接下來 ...

離散化例題 區間和

802.區間和 假定有乙個無限長的數軸,數軸上每個座標上的數都是0。現在,我們首先進行 n 次操作,每次操作將某一位置x上的數加c。接下來,進行 m 次詢問,每個詢問包含兩個整數l和r,你需要求出在區間 l,r 之間的所有數的和。輸入格式 第一行包含兩個整數n和m。接下來 n 行,每行包含兩個整數x...