Skip to content

Latest commit

 

History

History

0802

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

题目

假定有一个无限长的数轴,数轴上每个坐标上的数都是 $0$

现在,我们首先进行 $n$ 次操作,每次操作将某一位置 $x$ 上的数加 $c$

接下来,进行 $m$ 次询问,每个询问包含两个整数 $l$$r$,你需要求出在区间 $[l, r]$ 之间的所有数的和。

输入格式

第一行包含两个整数 $n$$m$

接下来 $n$ 行,每行包含两个整数 $x$$c$

再接下来 $m$ 行,每行包含两个整数 $l$$r$

输出格式

$m$ 行,每行输出一个询问中所求的区间内数字和。

数据范围

$-10^9 \le x \le 10^9$,

$1 \le n,m \le 10^5$,

$-10^9 \le l \le r \le 10^9$,

$-10000 \le c \le 10000$

输入样例:

3 3
1 2
3 6
7 5
1 3
4 6
7 8

输出样例:

8
0
5

题解

前置题目:0801

前置知识:二分、前缀和

本题知识:基础算法-离散化

题目分析

1 3 7 1 3 4 6 7 8  输入下标 + 左右边界

1 3 4 6 7 8 排序 + 去重

2 6 0 0 5 0 离散化到数组下标

0 2 8 8 8 13 13 从1开始的前缀和数组s

 [3, 7] 的和 = 7对应下标的前缀和 - 3前一个数对应下标的前缀和 = s[5] - s[1] = 11