核心思路
当所使用的数据范围很大,但实际数据排布较为稀疏,总体数量较少时,可以使用离散化的方法将数据处理为从1至n的连续数字。
区间和
假定有一个无限长的数轴,数轴上每个坐标上的数都是 0。
现在,我们首先进行 n 次操作,每次操作将某一位置 x 上的数加 c 。
接下来,进行 m 次询问,每个询问包含两个整数 l 和 r ,你需要求出在区间 [l,r] 之间的所有数的和。
−109 ≤ x ≤ 109,
1 ≤ n , m ≤ 105,
−109 ≤ l ≤ r ≤ 109,
−10000 ≤ c ≤ 10000
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
typedef pair<int,int> PII;
const int N=3e5+5;
int a[N],s[N];
int n,m;
vector<int> alls;
vector<PII