剪繩子題解 浮點數二分

2021-10-16 10:47:36 字數 1091 閱讀 8346

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

輸入格式

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

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

輸出格式

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

資料範圍

1≤n,m≤100000,

0輸出樣例:

2.50
樣例解釋

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

首先這一題叫我們求出m條目標繩子的最大長度,我們可以把這個問題變成我們選乙個數然後再分別看n條繩子每個能分出多少個我們」選的數「的倍數,然後把總數和m對比看是否大於等於m,基於這種思想我們就可以使用浮點數的二分來做了

特別提示的一點:如果題目中叫我們保留k位小數我們就把while迴圈的執行條件變為r-l>=1e-(k+2),比k多個2就可以了

#include

#include

#include

#include

using

namespace std;

const

int n =

100010

;long

long d[n]

;int n, m;

bool

check

(double mid)

return

false;}

intmain()

//二分

Day6 680 剪繩子 浮點數二分

include include include includeusing namespace std const int n 100010 int n,m int arr n bool check double mid int main printf 2f n mid return 0 直接解很難,...

浮點數二分

2 浮點數二分 模板 浮點數二分演算法模板 模板題 acwing 790.數的三次方根 bool check double x double bsearch3 double l,double r return l acwing790.數的三次方根 給定乙個浮點數n,求它的三次方根。輸入格式 共一行,...

整數二分和浮點數二分

注意點 1.有單調性一定可以二分,二分不一定需要單調性 2.二分本質 找到一種性質,將乙個區間一分為二,一部分滿足性質,另一部分不滿足性質,通過二分找到兩部分的邊界 3.二分一定有解,即能夠找到性質的邊界。無解通常跟題目有關。4.浮點數二分 精度足夠小時結束迴圈 或者 直接迴圈100次 while ...