藍橋杯 區間移位

2021-09-23 08:00:06 字數 1418 閱讀 5396

數軸上有n個閉區間:d1,...,dn。

其中區間di用一對整數[ai, bi]來描述,滿足ai < bi。

已知這些區間的長度之和至少有10000。

所以,通過適當的移動這些區間,你總可以使得他們的「並」覆蓋[0, 10000]——也就是說[0, 10000]這個區間內的每乙個點都落於至少乙個區間內。

你希望找乙個移動方法,使得位移差最大的那個區間的位移量最小。

具體來說,假設你將di移動到[ai+ci, bi+ci]這個位置。你希望使得maxi 最小。

【輸入格式】

輸入的第一行包含乙個整數n,表示區間的數量。

接下來有n行,每行2個整數ai, bi,以乙個空格分開,表示區間[ai, bi]。

保證區間的長度之和至少是10000。

【輸出格式】

輸出乙個數字,表示答案。如果答案是整數,只輸出整數部分。如果答案不是整數,輸出時四捨五入保留一位小數。

【樣例輸入】

210 5010

4980 9980

【樣例輸出】

20【樣例說明】

第乙個區間往左移動10;第二個區間往右移動20。

【樣例輸入】

40 4000

3000 5000

5001 8000

7000 10000

【樣例輸出】

0.5【樣例說明】 

第2個區間往右移0.5;第3個區間往左移0.5即可。

【資料規模與約定】

對於30%的評測用例,1 <= n <= 10;

對於100%的評測用例,1 <= n <= 10000,0 <= ai < bi <= 10000。

資源約定:

峰值記憶體消耗 < 256m

cpu消耗  < 1000ms

請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入...」 的多餘內容。

所有**放在同乙個原始檔中,除錯通過後,拷貝提交該原始碼。

注意: main函式需要返回0

注意: 只使用ansi c/ansi c++ 標準,不要呼叫依賴於編譯環境或作業系統的特殊函式。

注意: 所有依賴的函式必須明確地在原始檔中 #include , 不能通過工程設定而省略常用標頭檔案。

提交時,注意選擇所期望的編譯器型別。

#includeusing namespace std;

struct node

}}nd[10010];

int main()

sort(nd,nd+n);

int maxn=0,res;

for(int i=1;iint id=0;

if(nd[0].x!=0)

if(nd[n-1].y<10000)

if(id+id}else

return 0;

}

歷屆試題 區間移位 藍橋杯 二分 貪心

time limit per test memory limit per test input output 1.5 seconds 256 megabytes standard input standard output description 數軸上有n個閉區間d1,dn。其中區間di用一對整數...

藍橋杯 連號區間數

問題描述 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則稱這個區間連號區間。當n很小的時候,小明可以很快地算出答案...

藍橋杯 連號區間數

問題描述 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則稱這個區間連號區間。當n很小的時候,小明可以很快地算出答案...