二分法的应用:POJ1064 Cable master
生活随笔
收集整理的這篇文章主要介紹了
二分法的应用:POJ1064 Cable master
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*
POJ1064 Cable master時間限制: 1000MS 內存限制: 10000K
提交總數: 58217 接受: 12146
描述Wonderland的居民已經決定舉辦地區性編程比賽。評委會自愿并承諾舉辦有史以來最誠實的比賽。決定使用“星形”拓撲結構為參賽者連接計算機 - 即將它們全部連接到單個中央集線器。為了組織一場真正誠實的比賽,評審委員會負責人決定將所有參賽選手均勻地放在距離該比賽中心的地方。
為了購買網線,評審委員會聯系了當地的網絡解決方案供應商,要求為他們出售具有相同長度的特定數量的電纜。評審委員會希望電纜盡可能長地讓參賽者盡可能遠離彼此。
公司的Cable Master被分配到該任務。他知道長達一厘米的股票中的每根電纜的長度,并且他可以以厘米精度切割它們,告訴他必須切割的碎片的長度。然而,這一次,這個長度還不知道,而且有線電視大師完全不解。
您需要編寫一個程序來幫助Cable Master,該程序將確定可從電纜中切斷的電纜段的最大可能長度,以獲得指定數量的段。
輸入輸入文件的第一行包含兩個整數n和k,用空格分隔。N(1 = N = 10000)是庫存中的電纜數量,K(1 = K = 10000)是請求數量。第一行后面是N行,每行一個數字,以米為單位指定庫存中每條電纜的長度。所有電纜長度至少1米,最長100公里。輸入文件中的所有長度都以厘米精度寫入,精確到小數點后兩位數字。
產量在輸出文件中寫出Cable Master可能從電纜中切斷的部件的最大長度(以米為單位)以獲取所需數量的部件。數字必須以厘米精度寫入,精確到小數點后兩位數字。
如果無法削減所請求的每件至少一厘米長的件數,則輸出文件必須包含單個數字“0.00”(不含引號)。
示例輸入4 11
8.02
7.43
4.57
5.39
示例輸出2.00來源東北歐洲2001*/import java.util.Scanner;public class Main {static int N, K;static double[] a;public static void main(String[] args) {Scanner sc = new Scanner(System.in);N = sc.nextInt();K = sc.nextInt();a = new double[N];for (int i = 0; i < N; i++)a[i] = sc.nextDouble();sc.close();double low = -1, high = 100001;while (high - low > 0.001) {double mid = (low + high) / 2;if (C(mid)) {low = mid;} else {high = mid;}}if (high < 0.01)System.out.println("0.00");elseSystem.out.println(String.format("%.2f", (int) (high * 100) / 100.0));}static boolean C(double X) {int count = 0;for (int i = 0; i < N; i++)count = count + (int) (a[i] / X);return count >= K;}
}
?
轉載于:https://www.cnblogs.com/Alpharun/p/8663332.html
總結
以上是生活随笔為你收集整理的二分法的应用:POJ1064 Cable master的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Visio软件
- 下一篇: 纯前端实现pdf分页下载,完美支持横屏竖