區間和問題

2021-10-02 11:58:32 字數 1602 閱讀 4029

假定有乙個無限長的數軸,數軸上每個座標上的數都是0。

現在,我們首先進行 n 次操作,每次操作將某一位置x上的數加c。

近下來,進行 m 次詢問,每個詢問包含兩個整數l和r,你需要求出在區間[l, r]之間的所有數的和。

輸入格式

第一行包含兩個整數n和m。

接下來 n 行,每行包含兩個整數x和c。

再接下裡 m 行,每行包含兩個整數l和r。

輸出格式

共m行,每行輸出乙個詢問中所求的區間內數字和。

資料範圍

−109≤x≤109,

1≤n,m≤105,

−109≤l≤r≤109,

−10000≤c≤10000

輸入樣例:

3 31 2

3 67 5

1 34 6

7 8輸出樣例:80

5**如下:

#include

#include

#include

using

namespace std;

typedef pair<

int,

int> pii;

const

int n =

300010

;int n, m;

int a[n]

, s[n]

;vector<

int> alls;

vector add, query;

intfind

(int x)

return r +1;

}int

main()

);alls.

push_back

(x);

}for

(int i =

0; i < m; i ++))

; alls.

push_back

(l);

alls.

push_back

(r);

}// 去重

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;

}

區間問題 區間選點 區間問題 貪心

玄學的貪心問題,一般全憑直覺。貪心問題沒有固定討論,沒有模板,見多了就好了,證明想法的正確性是很困難的,大多採用反證法。905.區間選點 貪心思路 證明 時間複雜度 o n logn o nlogn o nlog n include include using namespace std const...

求區間和問題(水題)

題目意思很明確,求某段區間和。資料結構選擇 陣列 方法思路 1 最直接的方法就是對於每次詢問的區間 a,b 從s a 1 疊加到s b 1 但是考慮到這種方法,對於每次詢問都要重新疊加。時間複雜度為o n n 超時。2 考慮到每次都要重新疊加。可以選擇用陣列sum的第k項來儲存前k項和。對於區間 a...

區間貪心問題小結(區間選點,區間覆蓋,區間選取)

貪心演算法 思想 什麼是貪心演算法,什麼算得上是貪心 貪心演算法 又稱貪婪演算法 是指,在對問題求解時,總是做出在當前看來是最好的選擇。也就是說,不從整體最優上加以考慮,只做出在某種意義上的區域性最優解。貪心演算法不是對所有問題都能得到整體最優解,關鍵是貪心策略的選擇,選擇的貪心策略必須具備無後效性...