日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Openjudge NOI题库 ch0111/04 网线管理

發布時間:2024/1/17 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Openjudge NOI题库 ch0111/04 网线管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

這篇主要是講講細節

?

總時間限制:
1000ms
內存限制:
65536kB
描述

仙境的居民們決定舉辦一場程序設計區域賽。裁判委員會完全由自愿組成,他們承諾要組織一次史上最公正的比賽。他們決定將選手的電腦用星 形拓撲結構連接在一起,即將它們全部連到一個單一的中心服務器。為了組織這個完全公正的比賽,裁判委員會主席提出要將所有選手的電腦等距離地圍繞在服務器 周圍放置。

為購買網線,裁判委員會聯系了當地的一個網絡解決方案提供商,要求能夠提供一定數量的等長網線。裁判委員會希望網線越長越好,這樣選手們之間的距離可以盡可能遠一些。

該公司的網線主管承接了這個任務。他知道庫存中每條網線的長度(精確到厘米),并且只要告訴他所需的網線長度(精確到厘米),他都能夠完成對網線的切割工作。但是,這次,所需的網線長度并不知道,這讓網線主管不知所措。

你需要編寫一個程序,幫助網線主管確定一個最長的網線長度,并且按此長度對庫存中的網線進行切割,能夠得到指定數量的網線。

輸入
第一行包含兩個整數N和K,以單個空格隔開。N(1 <= N <= 10000)是庫存中的網線數,K(1 <= K <= 10000)是需要的網線數量。
接下來N行,每行一個數,為庫存中每條網線的長度(單位:米)。所有網線的長度至少1m,至多100km。輸入中的所有長度都精確到厘米,即保留到小數點后兩位。
輸出
網線主管能夠從庫存的網線中切出指定數量的網線的最長長度(單位:米)。必須精確到厘米,即保留到小數點后兩位。
若無法得到長度至少為1cm的指定數量的網線,則必須輸出“0.00”(不包含引號)。

?

樣例輸入
4 11 8.02 7.43 4.57 5.39
樣例輸出
2.00
1 #include <stdio.h> 2 int main() 3 { 4 int max=0,length[100000]; //記得改好數組長度 5 double temp; 6 int n,k; 7 int l=0,r,mid,ans; 8 int i; 9 scanf("%d%d",&n,&k); 10 for(i=0;i<n;i++) 11 { 12 scanf("%lf",&temp); //這里不存小數點,直接*100后存為整型 13 length[i]=temp*100; 14 if(length[i]>max) max=length[i];//取最大值 15 } 16 17 /* 18 19 首先構造的是[l,r)這樣一個區間 20 21 所以r=max+1 22 23 那么l+1的判斷就等同于[l,r]下的l!=r 24 25 */ 26 r=max+1; 27 while(l+1<r) 28 { 29 ans=0; 30 mid=(l+r)/2; 31 for(i=0;i<n;i++) 32 ans+=length[i]/mid; 33 if(ans>=k) l=mid;//這個if非常重要,用等號可以實現長度可以有最大值!具體原理的話是可能出現裁出k條后剩出零頭還可以再裁長一些,所以還要刷新到l=r-1 34 else r=mid; 35 } 36 printf("%.2lf\n",l/100.00); 37 return 0; 38 }

?

轉載于:https://www.cnblogs.com/KakagouLT/p/4940945.html

總結

以上是生活随笔為你收集整理的Openjudge NOI题库 ch0111/04 网线管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。