演算法競賽高階指南 最高的牛

2021-09-10 02:49:48 字數 1018 閱讀 4208

有 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。...