題目描述
有n條繩子,它們的長度分別為li。如果從它們中切割出k條長度相同的繩子,這k條繩子每條最長能有多長?
答案保留到小數點後2位(直接捨掉2為後的小數)。
輸入第一行兩個整數n和k,接下來n行,描述了每條繩子的長度li。
輸出切割後每條繩子的最大長度。
樣例輸入
4
118.02
7.43
4.57
5.39
樣例輸出2.00
提示
對於100%的資料 0最近在做二分題解,作為一道經典的二分題,切繩子是一定要會的。
這道題與木材加工有些相似,但這裡出現了浮點數,又要比木材加工複雜一些。
又因為它最多只有兩個小數點,所以,我們可以直接把輸入的數乘100,把浮點數變為整數就行了。
當然,輸出時又要除100,再變為浮點數。
double ans=0;
scanf
("%d%d"
,&n,
&k);
for(
int i=
1;i<=n;i++
)
這裡我用了乙個特判,防止輸出時輸不出0.00。(我不寫上去時wa了)
if
(ans*
100
進入正軌,開始二分。
二分怎麼寫知道吧?
左右兩指標,取中點縮小範圍。直到左指標大於等於右指標,得出答案。
int l=
0,r=
10000001
;while
(l<=r)
再讓我們看看函式 jsjs
js中有些什麼?
inline
booljs(
int x)
我們把每根繩子可以割出的段數累加,與要求段數比較,
如果符合條件,說明切割後每條繩子的最大長度可能大於當前中點的大小,將左指標移至中點再繼續找下乙個中點。
如果不符合條件,說明切割後每條繩子的最大長度可能小於當前中點的大小,將右指標移至中點再繼續找下乙個中點。
#include
using
namespace std;
double a[
100001];
int sum;
int k,m,n;
inline
booljs(
int x)
intmain()
if(ans*
100int l=
0,r=
10000001
;while
(l<=r)
printf
("%.2lf"
,(l-1)
/100.0);
return0;
}
新浪部落格搬家
2013.08.01 曼妮說 你怎麼什麼都想買啊 我細想了想 最近的自己 好像是這樣的 什麼都想買 什麼都想要 慾望太多 是不是 在想要買東西之前 我需要想一想 這件東西是不是我需要的 我是不是真的必須買不可呢 ps 太浮躁 需要靜心 2013.08.02 好想讓你知道 不是因為無聊 只是因為是你 ...
wordpress部落格搬家
這裡主要講解搬家後,之前的資料怎麼轉移。其實很容易,只需從舊部落格管理介面匯出xml檔案,在新部落格管理介面匯入xml檔案。1 設定相容模式。使用amh面板搭建的wp部落格,預設為安全模式,這種模式下公升級,安裝外掛程式,匯入都會錯誤,所以需要先設定為相容模式。執行完所有的操作後再將其切換回安全模式...
部落格搬家了
搬到新家 microsoft的live提示要將部落格搬家了,想了想,算了搬就搬吧,live用了那麼久一直沒有什麼變化,唯一喜歡的就是它的簡潔,換到wordpress也挺好,我喜歡做第乙個吃螃蟹的人。很久沒有對自己進行總結了,臨近國慶,一年又要結尾,草率描述一下 2010年8月 1 這個月是最忙的,加...