poj3122パイ(二点)

トピックリンクします。https://vjudge.net/problem/POJ-3122

問題の意味:ケーキN、M + 1つの個体が存在するが、ケーキがブロックM + 1に分割し、各ブロックの最大サイズを見つけます。

思考:水、半分の各ブロックのサイズと明らかに多くの人々が二分性質を満たすモノトーンを食べることができます。0の下限値と上限値の和/(M + 1)。

ACコード:

#include <cstdioを> 
する#include <アルゴリズム> 
の#include <cmath> 
の#include <cstdlib>
 使用して 名前空間STD。

const  int型 MAXN = 1E4 + 5 CONST  ダブル PI = ACOS( - 1 )。
INT T、N、M。
ダブル[MAXN]、合計; 

int型チェック(ダブルX){
     int型 NUM = 0 以下のためにint型 I = N; I> = 1 ; - I){ 
        NUM + = [I] / X。
        もし(NUM> m)のブレーク; 
    } 
    戻りNUM。
} 

int型のmain(){ 
    scanf関数(" %のD "、&T)。
    一方、(T-- ){  = 0 
        scanf関数(" %d個の%のD "、&​​N、&M)。
        M + = 1 ;
        以下のためにint型 i = 1 ; iは= N <++ {I)
            のscanf(" %LFを"[I])。
            [I] = PI * [I] * [I]。+ = [I]。
        } 
        ソート(A + 1、A + N + 1 )。
        ダブル L = 0.0、R =和/ M、ミッド。
        一方、(L <= R){ 
            半ば =(L + R)/ 2 もし(チェック(MID)> = M)L =ミッド+(1E- 5 )。
            そうでなければ R =ミッド(1E- 5 )。
        } 
        のprintf(" %.4fする\ n " 、R)。
    } 
    戻り 0 
}

 

おすすめ

転載: www.cnblogs.com/FrankChen831X/p/11411885.html