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