5 27模擬題 擷取

2021-08-01 22:21:48 字數 1267 閱讀 6566

給你n段線的長度,現在要你從他們上面切下k段來(切下的不能合併),使得這k段長度相等,並且最大。如若求出的答案小於0.01,則認為無解,輸出0.00。(所有非整數都精確到了兩位,輸出亦然)1<=n,k<=10000

(每條線段的長度都是在1到100000之間的實數)

二分查詢,一般用於最小值的最大值,最大值的最小值,或暴力找答案

二分查詢的最終答案要根據題目來確定,有時候是單獨儲存下來的最後乙個mid,有時候是l或r

而這道題很顯然要用二分,那就不難了

為了計算方便,我們把小數換成整數計算

時間複雜度(n log n)

var

n,k,i,l,r,m:longint;

j:int64;

a:array[1..10000]of longint;

c:real;

function

ssl(m:longint):boolean;

var i,j:longint;

begin

j:=0;

for i:=1

to n do

j:=j+a[i] div m;

if j>=k then

exit(true) else

exit(false);

end;

begin

assign(input,'a.in');

assign(output,'a.out');

reset(input);rewrite(output);

readln(n,k);

for i:=1

to n do

begin

readln(c);

a[i]:=round(c*100);

j:=j+a[i];

if a[i]>r then r:=a[i];

end;

l:=1;

if j div kthen r:=j div k;

i:=0;

while ldo

begin

m:=(l+r) div

2; if ssl(m) then

begin i:=m;l:=m+1;end

else r:=m;

end;

if ssl(l) then i:=l;

c:=i/100;

writeln(c:0:2);

close(input);close(output);

end.

遊老師模擬賽5 27

1.tower 題目描述 平面上有n個整點。如果將點 x0,y0 移動到 x1,y1 則需要的代價為 x0 x1 y0 y1 求使得k k 1 n 個點在同一位置上最少需要的代價。輸入檔案 第一行1個正整數n 接下來n行,每行兩個正整數xi和yi,為第i個點的座標,不超過106。輸出檔案 輸出共n行...

解密模擬題

現有加密二進位制檔案乙份,按規則進行解碼 a.轉碼後檔案由0x1b,0x4c開頭 b.跳過原始檔前六個位元組,每兩個位元組為乙個迴圈節 c.獲取初始key,由md5 hello 檔名 的前8位構成 d.對初始key進行如下操作 高4位 0x41a70000 0x7fff0000 低4位 0x41a7...

模擬題總結

1 模擬題的常見題型 1 打表,列出所有可能 資料較少,規律明顯 2 分階段求解,自頂向下,先寫出主程式,然後輸入輸出,判斷條件這些直接用函式實現,簡化步驟。3 模擬操作,有兩種思路,一是直接模擬,得出結果 二是先記錄所有操作,然後模擬每個操作。4 日期天數,可以逐年,逐月,逐日的相加,然後求星期之...