Advertisement

数列——差分

阅读量:

数列游戏

Description

对于一个初始值全为零且长度为N的序列,首先执行A次特定操作,每次操作均在Li至Ri的区间内增加数值Ci。随后进行B次查询,每次查询要求计算Li到Ri区间内的总和。

Input

每组数据的首行包含三个整数N A B,其中满足条件1<=N<=1000000,1<=A<=N且A<=B<=N。

随后的A行中,每一行给出三个数值Li Ri Ci,这些数值需符合1<=Li<=N、Li<=Ri<=N以及|Ci|<=100000000000000的约束条件。

接下来的B行,每行包含两个数值Li Ri,其取值范围与前述相同。

算法性能提升验证

针对每一个查询请求,需单独输出一个整数结果。由于最终得出的数值可能极为庞大,因此要求将结果对1000000007取模后进行输出。

Sample Input

复制代码

Sample Output示例展示

复制代码

思路:

如果我们采用暴力手段,每次对r到l区间进行c的增量操作,那么结果显然是不可行的:Time Limit Exceeded(时间超时)。需要特别注意的是,这道题并非在修改区间值的同时进行查询,而是在所有l到r区间的值都完成增加之后才开始查询。因此,我们只需要维护一个差分数组即可。

具体该如何维护呢?实际上非常简

全部评论 (0)

还没有任何评论哟~