私の誕生日は来ていると、伝統的に、私はパイを提供しています。1つのだけでなくパイ、いいえ、私は様々な味の様々なサイズの数、それらのNを、持っています。私の友人のFは、私のパーティーに来ているし、それらのそれぞれは、パイを取得します。それは厄介に見えるので、これは、1つのパイのワンピースではなく、いくつかの小さな部分でなければなりません。この作品は、しかし1つの全体のパイすることができます。
私の友人は非常に迷惑であり、そのうちの一つが他より大きな部分を取得する場合、彼らは文句を開始します。したがって、それらのすべてが、これは(パーティを損なうよりも優れている)甘やかされて育った取得いくつかのパイにつながる場合でも、同じサイズの(必ずしも均等に形のない)部分を取得する必要があります。もちろん、私も自分のためにパイを求めており、その部分はまた、同じサイズである必要があります。
私たちのすべてを取得することができ、最大の可能なピースのサイズは何ですか?すべてのパイは、円筒形状であり、それらはすべて同じ高さ1を持っていますが、パイの半径は異なる場合があります。
私の友人は非常に迷惑であり、そのうちの一つが他より大きな部分を取得する場合、彼らは文句を開始します。したがって、それらのすべてが、これは(パーティを損なうよりも優れている)甘やかされて育った取得いくつかのパイにつながる場合でも、同じサイズの(必ずしも均等に形のない)部分を取得する必要があります。もちろん、私も自分のためにパイを求めており、その部分はまた、同じサイズである必要があります。
私たちのすべてを取得することができ、最大の可能なピースのサイズは何ですか?すべてのパイは、円筒形状であり、それらはすべて同じ高さ1を持っていますが、パイの半径は異なる場合があります。
テストケースの数:正の整数とInputOneライン。次いで、各テストケースについて:
---を有する2つの整数N及びFの一つの行1 <= N、F <= 10 000:パイの数及び友人の数。
--- 1 <= RI <= 10 000とr iをN個の整数の一つの行:パイの半径。
OutputFor各テストケース、私と私の友人は、すべての答えは、せいぜい10 ^(の絶対誤差と浮動小数点数として指定する必要がありますサイズVのパイの部分を得ることができるよう可能な限り最大の体積Vと出力1つのライン-3).Sample入力
3 3 3 4 3 3 1 24 5 10 5 1 4 2 3 4 5 6 5 4 2
サンプル出力
25.1327 3.1416 50.2655
アイデア:ちょうど貪欲トピックを見て、私は/最小値やケーキの最小値がある,, ,,両極端を行うために探して二分法を使用する自閉症、および、対象書きましたm個の最大値が最大のケーキだ!
次のステップは、面積がケーキのすべての部分を作ることであるかを決定することです/ミッドは、正の数の原理を利用し保持、個々の点ミッド領域があるとき,,ケーキの各部分は、いくつかの人々の量を提供できるかを決定することです。
ACコード:
#include <iostreamの> する#include <アルゴリズム> の#include <cmath> の#include <cstdioを> の#define N 10010 の#define M_PI 3.1415926535898 使用 名前空間STD。 二重ARR [N]。 INTのN、M。 INTの裁判官(ダブルX){ int型の CNT = 0 。 以下のために(int型 i = 0 ; iがn <; iは++ ){ CNT + = ARR [I] / X。 } であれば(CNT> = M)リターン 1 。 リターン 0; } int型のmain() { int型のT。 cinを >> トン。 一方、(t-- ){ CIN >> N >> M。 M ++ ; int型のR; 二重の合計= 0 ; 以下のために(int型 i = 0 ; iがn <I ++は{) CIN >> Rと、 ARR [I] = M_PI *のR * rを、// 保存每个蛋糕的面积 } ダブルロー、ハイ。 ソート(ARR、ARR + N)。 低 =のARR [ 0 ] / M。// 最小取值 高い=のARR [N- 1 ]。// 最大取值 ダブル半ば=(高+低)/ 2 ; 一方、(ファブ(高-低)> 1E- 6 ) { 半ば =(ハイ+ロー)/ 2 。 もし(裁判官(MID)) { 低い = ミッド。 } 他{ 高 = ミッド。 } } のprintf(" %.4lfする\ n "、半ば)。 } 戻り 0 。 }