差分 思維技巧 pair與map的簡單應用

2021-10-17 03:30:50 字數 1150 閱讀 9045

小張農夫有n(1 ≤ n ≤ 10,000) 頭奶牛,他們按照1-n編號並站成一排。每頭奶牛都有乙個正整數的高度,你被告知最高的奶牛的高度h (1 ≤ h ≤ 1,000,000)和他所在位置編號i。(注意最高的奶牛不止一頭,i只是其中之一)

小張農夫給了你乙個擁有r (0 ≤ r ≤ 10,000)行的列表,每行給出a,b,這表示b位置奶牛的高度大於等於a位置奶牛的高度,並且在a,b奶牛之間的所有奶牛要嚴格小於a奶牛的高度。

現讓你求出每頭奶牛最大的高度。

input

第1行: 空格隔開的四個整數:n, i, h , r

第2行–r+1行: 每行輸入 a 和 b (1 ≤ a, b ≤ n)

output

第1行–第n行:行 i 包含乙個 i 位置奶牛有可能的最大高度

sample input

9 3 5 5

1 35 3

4 33 7

9 8sample output54

5344

555思路:

可以假設所有的奶牛都是最高的,然後再用差分去減就可以了

注意!此題需要判重!map+pair走起~

#include

#include

using

namespace std;

typedef pair<

int,

int> pii;

const

int n=

10000+10

;mapbool

>ok;

int b[n]

;int n,i,h,r;

void

insert

(int l,

int r,

int c)

intmain()

insert

(x+1

,y-1,-

1),ok[

make_pair

(x,y)]=

true;}

for(

int j=

1;j<=n;j++

) b[j]

+=b[j-1]

,cout << b[j]

+h

}

思維題 倒序差分的運用

筱瑪是乙個熱愛線段樹的好筱瑪。筱瑪的爺爺馬爺在遊戲中被筱瑪吊打了,於是他惱羞成怒,決定給筱瑪出這樣一道資料結構題 給定乙個長度為n nn的陣列a aa,剛開始每一項的值均為0 00。支援以下兩種操作,操作共m mm次 1 l r 1 l r1 l r 將al ar al aral ar的每一項的值加...

LZH的多重影分身 qduoj 思維 差分

下面的題解是我們厲害的學長給的,真是太厲害了。對於每乙個點,我們都可以計算出該點平移到線段上的距離的範圍 我們用正數代表向數軸正向移動,用負數代表向數軸負向移動 比如,有乙個點位於數軸上 4 的位置,有兩條線段 1,2 5,6 則可以讓該點移動到線段上的平移距離的範圍為 3,2 1,2 所以我們可以...

老衛帶你學 C 中map與pair的區別

1 pair的型別 pair是一種模版型別。每個pair 可以儲存兩個值。這兩種值的型別沒有限制,也可以將自己寫的類放進去。2 pair 應用 如果乙個函式有兩個返回值的話,如果是相同型別,就可以用陣列返回,如果是不同型別,兩個屬性的話,就可以用pair 進行操作,有多個屬性的時候 可以使用tupl...