NKOJ P3754 (差分陣列)

2021-09-27 03:28:31 字數 1192 閱讀 1007

nkoj3754 數列遊戲 

時間限制 : - ms 空間限制 : 65536 kb 

評測說明 : 時限1000ms

問題描述 

給定乙個長度為n的序列,首先進行a次操作,每次操作在li和ri這個區間加上乙個數ci。 

然後有b次詢問,每次詢問li到ri的區間和。 

初始序列都為0。

輸入格式 

第一行三個整數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。範圍同上。

輸出格式 

對於每次詢問,輸出一行乙個整數。 

因為最後的結果可能很大,請對結果mod 1000000007。

樣例輸入 

5 1 1 

1 3 1 

1 4

樣例輸出 

3
**:

/*

題意:

給定乙個序列 長度為n

先進行a次操作, 每次操作在 l 到 r這個區間上 的數都+ c

然後b次詢問, 每次求 l 到 r 區間和

思路:資料範圍 n 1e6 ( 1 <= a, b <= n )

區間更新,區間求和

1) 線段樹 區間更新o(log(2)n) 區間 查詢o(log(2)n)

2) 差分陣列 更新 o(1) 區間查詢 o(n)

*/#include#includeusing namespace std;

typedef long long ll;

const int maxn = 1e6;

const int mod = 1e9 + 7;

ll f[maxn + 10];

ll sum[maxn + 10];

int n, a, b;

int main()

int tmp = 0;

for(int i = 1; i <= n; ++i)

int ans;

for(int i = 1; i <= b; ++i)

return 0;

}

差分陣列概述

在網上講差分陣列的博文很少,也很難找到。一度以為差分陣列是傳播於小眾的神犇技巧所以一直放著沒有去研習。今天做了 bzoj1635後發現各路神犇都用差分陣列,本蒟卻傻傻寫了線段樹。對於序列a 取a i a i 1 為其差分陣列b i 的值,可以發現,a i bj 1 j i 如 對於序列 a b c ...

港口 差分陣列)

傳送門 思路 因為是區間加減,所以考慮差分陣列,題意變為 要求差分陣列d 2 d 3 d n d 2 d 3 dots d n d 2 d 3 d n 全為0.每次區間加或減會使差分陣列乙個加1,乙個減1,因為要用最小次數,所以每次操作最好產生有效貢獻,可知當為正數或負數的差分陣列變為0後,剩下我們...

差分陣列詳解

學習部落格 題目 來先看一道裸題,有n個數。m個操作,每一次操作,將x y區間的所有數增加z 最後有q個詢問,每一次詢問求出x y的區間和。思路 很明顯,直接用字首和無法快速滿足這個操作,所以我們就用到了差分陣列。設a陣列表示原始的陣列 設d i a i a i 1 1設f i f i 1 d i ...