分派pie(二分法)

2021-10-02 04:25:37 字數 1408 閱讀 1696

2.問題描述

我的生日要到了!根據習俗,我需要將一些派分給大家。我有n個不同口味、不同大小的派。有f個朋友會來參加我的派對,每個人會拿到一塊派(必須乙個派的一塊,不能由幾個派的小塊拼成;可以是一整個派)。

我的朋友們都特別小氣,如果有人拿到更大的一塊,就會開始抱怨。因此所有人拿到的派是同樣大小的(但不需要是同樣形狀的),雖然這樣有些派會被浪費,但總比搞砸整個派對好。當然,我也要給自己留一塊,而這一塊也要和其他人的同樣大小。

請問我們每個人拿到的派最大是多少?每個派都是乙個高為1,半徑不等的圓柱體。

輸入第一行包含兩個正整數n和f,1 ≤ n, f ≤ 10 000,表示派的數量和朋友的數量。

第二行包含n個1到10000之間的整數,表示每個派的半徑。

輸出輸出每個人能得到的最大的派的體積,精確到小數點後三位

輸入樣例

3 34 3 3

輸出樣例

25.133

二分法————分pie

題意 : 給你 n 個pie,m + 1 個人,每個pie的高度相同,只是他們的半徑不同,

然而這個m + 1個人還很挑剔,被分的每塊 子 pie 必須只能來自 n塊 pie中的其中一塊

思路 : 這一題就是簡單的二分,我先假設分給每個人的 子pie 為 mid ,再通過二分不斷縮減精確這個,所 分子pie的假設值,,,,,,,在這樣我就可以得到我們想要的值

這一題的思路還可以參照 與該題相似的題

#include

#include

using namespace std;

const

double pi =

acos(-

1);//求圓周率

const

int len =

10005

;const

double cha =

0.00001

;//⚠️精讀盡量開大一點,防止出錯

int n,m;

int ar[len]

;double ans;

//每個人所能分的最大子pie的大小

bool judge

(double mid)

if(m_cnt <=0)

}return false;

}void

binary_search

(double l ,

double r)

else

//不能夠分割出來m塊大小為 mid的子pie,那麼我們就縮小,mid值(通過調整 上線mx = mid)

}printf

("%.3lf\n"

,ans);}

intmain()

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法,二分搜尋

二分法是乙個應用很廣泛的演算法 好吧,剛說出這句話的時候,我查了一下資料,發現我了解的應用寥寥無幾.ok,既然不知道,那就下次補充把。咱們直接進入主題。二分法 bisection method 是一種方程式根的近似值求法。演算法 若要求已知函式f x 0的值則 1.先找出乙個區間 a,b 使得f a...