time limit per test
memory limit per test
input
output
1.5 seconds
256 megabytes
standard input
standard output
description:
數軸上有n個閉區間d1,…,dn。其中區間di用一對整數[ai, bi]來描述,滿足ai < bi。已知這些區間的長度之和至少有10000。所以,通過適當的移動這些區間,你總可以使得他們的「並」覆蓋[0, 10000]——也就是說[0, 10000]這個區間內的每乙個點都落於至少乙個區間內。input你希望找乙個移動方法,使得位移差最大的那個區間的位移量最小。
具體來說,假設你將di移動到[ai+ci, bi+ci]這個位置。你希望使得maxi |ci|最小。
輸入的第一行包含乙個整數n,表示區間的數量。one output接下來有n行,每行2個整數ai,bi,以乙個空格分開,表示區間[ai, bi]。保證區間的長度之和至少是10000。
輸出乙個數,表示答案。如果答案是整數,只輸出整數部分。如果答案不是整數,輸出時四捨五入保留一位小數。one example input
2two example output two example input10 5010
4980 9980
4example output0 4000
3000 5000
5001 8000
7000 10000
0.5hit
第乙個區間往左移動10;第二個區間往右移動20。分析:第2個區間往右移0.5;第3個區間往左移0.5即可。
對於30%的評測用例,1 ≤ n ≤ 10;
對於100%的評測用例,1 ≤ n ≤ 10000,0 ≤ ai < bi≤ 10000。
題意:
n
nn個區間,若假定乙個c
ic_i
ci,表示第ith
i_it
h區間的左右邊界可以擴充套件至[ai+
ci,b
i+ci
]a_i+c_i, b_i+c_i]
ai+ci
,bi
+ci
], 要使得所有區間的並可以覆蓋數軸[0,
10000
][0,10000]
[0,100
00](原來一開始理解錯了啊)問max
(ci)
max(c_i)
max(ci
)的最小值是多少
做法:
應該很容易可以想到要用二分,只是問題在於如何che
ck
check
chec
k是否可以
u mm
ummum
m參考了別人的部落格 (菜是原罪) ,這裡加一下自己的理解,區間移位
先對原區間進行排序,優先將右端點公升序排序,若右端點相等將左端點公升序排序
之後遍歷每乙個區間
在遍歷ith
i_it
h區間時, 可以求出從左往右第乙個符合條件(即還沒有計算過且可以被覆蓋的)的下標
然後更新到目前為止最遠可以覆蓋到的右端點,即以下**中的ans
ansan
s要注意到的是,因為上乙個區間如果可以被覆蓋,那麼前面所有被覆蓋的應該都是連續的
也就是說相當於前面所有區間變成一塊大區間,因此可以直接更新最右端點可以覆蓋到的
如果最終可以到達的右端點ans
>
=10000
ans >= 10000
ans>=1
0000
,說明二分得到的數還有可能繼續減小
code:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef
long
long ll;
const
int maxn =
1e4+5;
const
int inf =
0x3f3f3f3f
;struct node
}p[maxn]
;bool vis[maxn]
;bool check
(double x,
int n)
return ans >=
10000;}
intmain()
sort
(p +
1, p +
1+ n)
;int l =
0, r =
100000
, mid;
while
(l < r)
if(l %10)
printf
("%.1f\n"
, l *
0.1)
;else
printf
("%d\n",(
int)
(l*0.1))
;return0;
}
試題 歷屆試題 區間移位(二分求最大值最小)
問題描述 數軸上有n個閉區間d1,dn。其中區間di用一對整數 ai,bi 來描述,滿足ai bi。已知這些區間的長度之和至少有10000。所以,通過適當的移動這些區間,你總可以使得他們的 並 覆蓋 0,10000 也就是說 0,10000 這個區間內的每乙個點都落於至少乙個區間內。你希望找乙個移動...
藍橋杯 試題 歷屆試題 連號區間數
資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則...
藍橋杯 歷屆試題 連號區間數
問題描述 小明這些天一直在思考這樣乙個奇怪而有趣的問題 在1 n的某個全排列中有多少個連號區間呢?這裡所說的連號區間的定義是 如果區間 l,r 裡的所有元素 即此排列的第l個到第r個元素 遞增排序後能得到乙個長度為r l 1的 連續 數列,則稱這個區間連號區間。當n很小的時候,小明可以很快地算出答案...