切繩子題解(部落格搬家)

2021-10-09 23:55:30 字數 1492 閱讀 5717

題目描述

有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 這個月是最忙的,加...