|NOIOJ|二分|04:网线主管
来源:互联网 发布:音乐后期制作软件手机 编辑:程序博客网 时间:2024/05/28 14:57
仙境的居民们决定举办一场程序设计区域赛。裁判委员会完全由自愿组成,他们承诺要组织一次史上最公正的比赛。他们决定将选手的电脑用星形拓扑结构连接在一起,即将它们全部连到一个单一的中心服务器。为了组织这个完全公正的比赛,裁判委员会主席提出要将所有选手的电脑等距离地围绕在服务器周围放置。
为购买网线,裁判委员会联系了当地的一个网络解决方案提供商,要求能够提供一定数量的等长网线。裁判委员会希望网线越长越好,这样选手们之间的距离可以尽可能远一些。
该公司的网线主管承接了这个任务。他知道库存中每条网线的长度(精确到厘米),并且只要告诉他所需的网线长度(精确到厘米),他都能够完成对网线的切割工作。但是,这次,所需的网线长度并不知道,这让网线主管不知所措。
你需要编写一个程序,帮助网线主管确定一个最长的网线长度,并且按此长度对库存中的网线进行切割,能够得到指定数量的网线。
接下来N行,每行一个数,为库存中每条网线的长度(单位:米)。所有网线的长度至少1m,至多100km。输入中的所有长度都精确到厘米,即保留到小数点后两位。
若无法得到长度至少为1cm的指定数量的网线,则必须输出“0.00”(不包含引号)。
4 118.027.434.575.39
2.00
依然二分题,注意以下几个细节:
1、由于精度问题,把输入数据*100放入整数数组
2、r要在最长电线上+1,因为会出现整条电线用完的情况
Ps:WA了几次就因为这两问题。
参考代码:
#include<cstdio>int n,k; int a[10200];int l=0, mid, r=0;void init() {scanf("%d%d", &n, &k);for (int i=1;i<=n;i++) {double t;scanf("%lf", &t);a[i] = (float)(t*100.0);if (a[i]>r) r=a[i];} r++;}int check(int x) {// 比f多 return 1int ans=0;for (int i=1;i<=n;i++) {ans += a[i] / x;}if (ans>=k) return 1; else return 0; }void go() {while (l+1<r) {mid = (l+r)/2;if (check(mid)) l=mid; else r=mid;}printf("%.2lf", l / 100.0); }int main() {init();go();return 0;}
0 0
- |NOIOJ|二分|04:网线主管
- 二分-网线主管
- 【openjudge】网线主管 二分查找
- openjudge1.11编程基础之二分查找 04:网线主管
- 1.11编程基础之二分查找 04:网线主管
- 04:网线主管OJ
- 04:网线主管
- NOI题库之二分 网线主管
- OpenJudge 1.11-04 网线主管
- OpenJudge noi 04网线主管
- |NOIOJ|二分|05:派
- POJ网线主管
- OpenJudge_P0066 网线主管
- |NOIOJ|二分|06:月度开销
- |NOIOJ|二分|06:月度开销
- |NOIOJ|NOIP2015|二分|10:河中跳房子
- Noi题库 拼点游戏&&网线主管
- |NOIOJ|二分归并|7622:求排列的逆序数
- 使用AlertDialog时发生了空指针异常
- java中常见的几种异常
- 动态加载表头
- 加载Obj文件并用OpenGL渲染注意问题
- 第十三周项目5:立体类族共有的抽象类
- |NOIOJ|二分|04:网线主管
- 学会编写Android Studio插件 别停留在用的程度了
- Linux下的C++程序崩溃时打印崩溃信息
- EditText中imeOptions属性使用及设置无效解决
- java8 ConcurrentHashMap
- 关于服务程序开发的几点注意事项
- SVM入门(一)至(三)Refresh
- iScroll 左右滑动获取索引
- vim编辑器的使用