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...