EOJ 3246 實驗室傳染病 單調棧

2021-08-01 08:44:34 字數 1346 閱讀 5927

time limit per test: 2.0 seconds

time limit all tests: 10.0 seconds

memory limit: 256 megabytes

ecnu 的 acm 實驗室患上了一種傳染病,這種病的傳染性極強,並且因為每個人的體質不同傳染的範圍也不同。

為了簡化這個問題,我們不妨假設有 n

個人站在一條水平線上,每個人有初始的位置和他患病時的傳染範圍。當乙個人患病時,他的傳染範圍內(包括邊界上)的人全部會被感染並繼續向外傳播。

但是我們並不知道 ecnu 實驗室的傳染源是誰,所以請你計算出每個人作為傳染源時最後會使得多少人被感染?

測試資料報含不超過 20 個測試檔案,每個測試檔案是單組資料。

第一行乙個整數 n

(1≤n≤105

) 。

接下來 n

行每行有兩個整數 xi,

ri(−10

9≤xi

≤109,

1≤ri

≤109)

,表示每個人的位置和傳染範圍。

資料保證位置各不相同。

一行 n

個整數。其中第 i

個表示第 i

個人(按照輸入順序)作為傳染源時最後被感染的人數。

input

4

0 10

8 318 10

20 1

output

2 1 3 1

2017 華東師範大學網賽

解:主要思想就是不斷更新左右區間;更新1:如果當前點的做範圍的點的左邊界大於他的左邊界就一直更新,右邊界同理:

更新2:當前的點雖然左範圍覆蓋不到左邊的點但是可以通過右邊界能夠覆蓋到的點去覆蓋左邊界;重複更新,直到無法更新

#include #include using namespace std;

const int n = 1e5+7;

typedef long long ll;

typedef pairpi;

int l[n], r[n];

pi a[n], b[n];

int flag, n;

void update1()

st2.pop();

}st2.push(i);

}return ;

}void update2()

st.pop();

}st.push(i);

}stackst2;

for(int i=n;i>=1;i--)

{while(!st2.empty()&&st2.top()<=r[i])

{if(l[st2.top()]

華為實驗室

談到華為,大家都不陌生 世界500強 全球第二通訊 商,為全球140多個國家和地區的20多億人提供服務 同時也是全球ict領域的領導者。如此成就和至高無上的榮譽地位,其成功更是與實驗室無數個日夜的技術鑽研有著分不開的關係。關注過華為的朋友想必聽說過 2012實驗室 據稱,該實驗室的名字來自於任正非在...

8 10於實驗室

前幾天忙於保研的事情,沒再繼續做我的專案,結果保研恐怕要黃了,這幾天潛心考研,結果又收到了中行的實習通知,一時兩難。有時候自己寫東西太不自然,感覺寫技術文章很大一部分是為了給別人看,反而不是為了提公升自己,感覺這個心態不好,太虛榮了,現在想寫點自己的東西,輕鬆的,暢所欲言的,沒有文法和壓力的東西,記...

迷你Linux實驗室

p 當今,個人電子裝置進入了小型化時代,什麼東西都喜歡拿在手中玩,而且必是 3g 聯網裝置。那麼,可以做得多麼小呢?按照蘋果賈伯斯的理念,體積 小也是一種美,將來,微控制器 soc,或叫單片系統 必然是乙個發展方向。由此可見,arm處理器大有發展前景。那麼,哪種作業系統算小呢?大家知道,僅僅乙個 l...