小張農夫有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...