有 n 頭牛站成一行,被編隊為1、2、3…n,每頭牛的身高都為整數。
當且僅當兩頭牛中間的牛身高都比它們矮時,兩頭牛方可看到對方。
現在,我們只知道其中最高的牛是第 p 頭,它的身高是 h ,剩餘牛的身高未知。
但是,我們還知道這群牛之中存在著 m 對關係,每對關係都指明了某兩頭牛 a 和 b 可以相互看見。
求每頭牛的身高的最大可能值是多少。
第一行輸入整數n,p,h,m,資料用空格隔開。
接下來m行,每行輸出兩個整數 a 和 b ,代表牛 a 和牛 b 可以相互看見,資料用空格隔開。
一共輸出 n 行資料,每行輸出乙個整數。
第 i 行輸出的整數代表第 i 頭牛可能的最大身高。
1≤n≤10000,
1≤h≤1000000,
1≤a,b≤10000,
0≤m≤10000
9 3 5 5
1 35 3
4 33 7
9 8545
3445
55注意:此題中給出的關係對可能存在重複
如果兩隻牛能互相看見,則中間的牛高度都減一
則原文題轉化為:給定乙個序列,每次給序列中的某個區間都減1,問最後序列中的每個數為幾
每個區間減1:計算元陣列間的差分:差分用於每次動態地給某個區間加乙個常數
由差分求原陣列:計算差分序列的字首和
#include
#include
#include
using namespace std;
const
int n =
10010
;int d[n]
;// 差分序列
intmain()
)));
d[a +1]
--, d[b]++;
}}// 由差分陣列求原陣列:求字首和
for(
int i =
1; i <= n; i ++
)return0;
}
演算法競賽高階指南 最高的牛(差分 區間處理)
題目 有 n 頭牛站成一行,被編隊為1 2 3 n,每頭牛的身高都為整數。當且僅當兩頭牛中間的牛身高都比它們矮時,兩頭牛方可看到對方。現在,我們只知道其中最高的牛是第 p 頭,它的身高是 h 剩餘牛的身高未知。但是,我們還知道這群牛之中存在著 m 對關係,每對關係都指明了某兩頭牛 a 和 b 可以相...
演算法競賽高階指南 最高的牛(差分 字首和)
有 n 頭牛站成一行,被編隊為1 2 3 n,每頭牛的身高都為整數。當且僅當兩頭牛中間的牛身高都比它們矮時,兩頭牛方可看到對方。現在,我們只知道其中最高的牛是第 p 頭,它的身高是 h 剩餘牛的身高未知。但是,我們還知道這群牛之中存在著 m 對關係,每對關係都指明了某兩頭牛 a 和 b 可以相互看見...
《演算法競賽高階指南》 防曬
有c頭奶牛進行日光浴,第i頭奶牛需要minspf i 到maxspf i 單位強度之間的陽光。每頭奶牛在日光浴前必須塗防曬霜,防曬霜有l種,塗上第i種之後,身體接收到的陽光強度就會穩定為spf i 第i種防曬霜有cover i 瓶。求最多可以滿足多少頭奶牛進行日光浴。輸入格式 第一行輸入整數c和l。...