(今日頭條面試題)剪繩子(二分帶詳細思路)

2021-10-14 18:33:45 字數 951 閱讀 3709

有n根繩子,第i根繩子長度為li,現在需要m根等長的繩子,你可以對n根繩子進行任意裁剪(不能拼接),請你幫忙計算出這m根繩子最長的長度是多少。

輸入格式

第一行包含2個正整數n、m,表示原始繩子的數量和需求繩子的數量。

第二行包含n個整數,其中第 i 個整數lili表示第 i 根繩子的長度。

輸出格式

輸出乙個數字,表示裁剪後最長的長度,保留兩位小數。

資料範圍

1≤n,m≤100000

010的9次方

輸入樣例:34

354輸出樣例:

2.50

樣例解釋

第一根和第三根分別裁剪出一根2.50長度的繩子,第二根剪成2根2.50長度的

繩子,剛好4根。

思路:首先直接做不好做,那麼想想暴力,確定繩子長度那麼總共切幾塊就知道了!

將繩子長度從大到小列舉,第乙個滿足能切m條的就是滿足條件的最大長度即可

然後優化,就是發現他有單調性,可以用二分,比如 如果乙個長度

切出來大於等於m條,那麼比這個長度小的都滿足,在這個長度到右邊界找答案

#include

using

namespace std;

const

int n=

100010

;int a[n]

;int n,m;

intget

(double x)

return sum;

}int

main()

}double l=

0,r=maxn;

while

(r-l>

1e-6

)printf

("%.2f"

,l);

return0;

}

今日頭條面試題 基礎練習

都是基礎題目,也起來也挺繞的 作為乙個手串藝人,有金主向你訂購了一條包含n個雜色串珠的手串 每個串珠要麼無色,要麼塗了若干種顏色。為了使手串的色彩看起來不那麼單調,金主要求,手串上的任意一種顏色 不包含無色 在任意連續的m個串珠裡至多出現一次 注意這裡手串是乙個環形 手串上的顏色一共有c種。現在按順...

c 病句 今日頭條面試題

試題描述 為了提高文章質量,每一篇文章 假設全部都是英文 都會有m名編輯審核,每個編輯獨立工作,會把覺得有問題的句子通過下標記錄下來,比如 1,10 1表示病句的第乙個字元,10表示病句的最後乙個字元。也就是從1到10個字元組成的句子,是有問題的。現在需要把多名編輯有問題的句子合併起來,送給總編輯進...

今日頭條async await面試題執行順序

async function async1 async function async2 console.log script start settimeout function 0 async1 new promise function resolve then function console.l...