5.27模拟题 截取
来源:互联网 发布:电网仿真软件 编辑:程序博客网 时间:2024/06/05 06:53
- 题目
- 题解
- 代码
题目
给你N段线的长度,现在要你从他们上面切下K段来(切下的不能合并),使得这K段长度相等,并且最大。如若求出的答案小于0.01,则认为无解,输出0.00。(所有非整数都精确到了两位,输出亦然)1<=N,K<=10000
(每条线段的长度都是在1到100000之间的实数)
题解
二分查找,一般用于最小值的最大值,最大值的最小值,或暴力找答案
二分查找的最终答案要根据题目来确定,有时候是单独保存下来的最后一个mid,有时候是l或r
而这道题很显然要用二分,那就不难了
为了计算方便,我们把小数换成整数计算
时间复杂度(n log n)
代码
var n,k,i,l,r,m:longint; j:int64; a:array[1..10000]of longint; c:real;function ssl(m:longint):boolean;var i,j:longint;begin j:=0; for i:=1 to n do j:=j+a[i] div m; if j>=k then exit(true) else exit(false);end;begin assign(input,'a.in'); assign(output,'a.out'); reset(input);rewrite(output); readln(n,k); for i:=1 to n do begin readln(c); a[i]:=round(c*100); j:=j+a[i]; if a[i]>r then r:=a[i]; end; l:=1; if j div k<r then r:=j div k; i:=0; while l<r do begin m:=(l+r) div 2; if ssl(m) then begin i:=m;l:=m+1;end else r:=m; end; if ssl(l) then i:=l; c:=i/100; writeln(c:0:2); close(input);close(output);end.
阅读全文
1 0
- 5.27模拟题 截取
- 华为模拟题一:密码截取C++实现
- [.net]模拟网站登陆、截取数据
- selenium模拟登陆时截取验证码
- C# 模拟PrintScreen 和 Alt+PrintScreen截取屏幕图片
- javascript中刷新,加载,对比,截取,模拟toggle事件
- 字符串截取-笔试题
- 截取
- 截取
- 模拟题
- 模拟题
- 模拟题
- 66. 在C#里模拟LotusScript里的字符串截取函数
- 2015华为实习生招聘机试模拟考1之密码截取
- 5.27模拟题 逃避系统警察
- 笔试题,按照byte截取字符串
- 人人笔试题 截取html字符串
- 【Java笔试题】按字节截取字符串
- nginx之LNMP配置知识
- 信息安全导论复习(6-8章)
- 优秀博客总结
- awr报告生成
- 提升方法总结
- 5.27模拟题 截取
- CSS属性列表
- 黑苹果 【I7 7700K + z270 + HD630集显 安装记录】
- Oracle 执行简单的更新插入语句,执行一直持续,无法成功
- 浅谈多态
- angularjs动态添加ng-click
- 无向图的邻接表深度优先算法
- Hibernate操作时间需要注意的问题(转)
- Git repo操作基本命令