【题目链接】

ybt 1242:网线主管
OpenJudge NOI 1.11 04:网线主管

【题目考点】

1. 二分答案

【解题思路】

看题目中的数据都带小数点,似乎这是实数域上的问题。但仔细分析,该题的输入数据精确到厘米,要求输出结果精确到厘米,实际只要在处理过程中保持为以厘米为单位,那么该问题本质上是整数域的问题。

用二分思想考虑该问题,题目问:要找最长的网线长度。对应的模板为:求满足某一条件的最大值。
网线长度需要满足的条件为:将库存中的网线按该长度进行切割,得到的网线数量大于等于居民需要的网线数量。
假设要判断为网线长度为x是否满足条件,先遍历所有库存中网线长度,每条网线长度记为l,那么l/x(整除运算)即为这条库存网线可以切出的成品网线的条数,加和求出总条数。看处理得到的网线总条数是否大于等于居民需要的网线数量k,如果是,那么满足条件,否则不满足条件。

注意单位换算,计算过程用厘米为单位,输出时转用单位米。
二分查找时,网线长度最小值设为0,最大值为100km=107cm100km=10^7cm100km=107cm,考虑极端情况,假设库存中每条网线都是107cm10^7cm107cm,一共有10410^4104条,而要切成1cm1cm1cm的网线,共有107∗104=101110^7*10^4=10^{11}107∗104=1011条网线,超出了int的范围。所以网线计数变量要设为long long。

【题解代码】

解法1:二分答案

#include <bits/stdc++.h>
using namespace std;
int n, k, a[10005];//a[i]:第i条网线的长度 单位:厘米
bool check(int l)//如果需要网线长度为l,最多可以得的网线段数是否大于等于k
{long long ct = 0;//计数for(int i = 1; i <= n; ++i)ct += a[i] / l;//整除运算return ct >= k;
}
int main()
{double t; cin >> n >> k;for(int i = 1; i <= n; ++i){cin >> t;a[i] = t * 100;//单位:厘米}if(check(1) == false)//如果切成1厘米一段也不能达到要求的数量,则没有切割方案 {cout << "0.00";return 0;}  int l = 1, r = 1e7, m;while(l < r)//二分答案求满足条件的最大值{m = (l + r + 1) / 2;if(check(m))//如果网线长为m满足条件l = m;elser = m - 1;}cout << fixed << setprecision(2) << (double)l / 100;//单位转为米return 0;
}

信息学奥赛一本通 1242:网线主管 | OpenJudge NOI 1.11 04:网线主管相关推荐

  1. 信息学奥赛一本通 1009:带余除法 | OpenJudge NOI 1.3 04

    [题目链接] ybt 1009:带余除法 OpenJudge NOI 1.3 04:带余除法 [题目考点] 1. 整除运算 / 假设被除数和除数都是正整数 当将除法写为:被除数÷除数=商--余数 时 ...

  2. 信息学奥赛一本通 1190:上台阶 | OpenJudge NOI 2.3 3525:上台阶

    [题目链接] ybt 1190:上台阶 OpenJudge NOI 2.3 3525:上台阶 注:ybt 1190最大数据数量为71,而OpenJudge 2.3 3525中最大数据数量为100.如果 ...

  3. 信息学奥赛一本通 1225:金银岛 | OpenJudge NOI 4.6 1797:金银岛

    [题目链接] ybt 1225:金银岛 OpenJudge NOI 4.6 1797:金银岛 [题目考点] 1. 贪心 2. 部分背包问题 [解题思路] 该题为部分背包问题 1. 贪心选择性质的证明: ...

  4. 信息学奥赛一本通 1226:装箱问题 | OpenJudge NOI 4.6 19:装箱问题

    [题目链接] ybt 1226:装箱问题 OpenJudge NOI 4.6 19:装箱问题 [题目考点] 1. 贪心 [解题思路] 该题说是三维立方体,实际上无论是包裹还是产品,高度都是h,因而不用 ...

  5. 信息学奥赛一本通 1216:红与黑 / OpenJudge NOI 2.5 1818

    [题目链接] ybt 1216:红与黑 OpenJudge NOI 2.5 1818:红与黑 [题目考点] 1. 连通块问题 2. 深搜/广搜 [解题思路] 1. 深搜 从第一个格子出发,遍历所有可以 ...

  6. 信息学奥赛一本通 1115:直方图 | OpenJudge NOI 1.9 09

    [题目链接] ybt 1115:直方图 OpenJudge NOI 1.9 09:直方图 [题目考点] 1. 散列存储 也叫哈希存储.其思想为:将要存储的值通过某种算法映射到存储地址,映射算法为散列函 ...

  7. 信息学奥赛一本通 1114:白细胞计数 | OpenJudge NOI 1.9 08

    [题目链接] ybt 1114:白细胞计数 OpenJudge NOI 1.9 08:白细胞计数 [题目考点] 1. 求数组中最大值及其下标 方法1:保存最大值和下标 设置临时最大值变量mx,mx的初 ...

  8. 信息学奥赛一本通 1109:开关灯 | OpenJudge NOI 1.5 31:开关灯

    [题目链接] ybt 1109:开关灯 OpenJudge NOI 1.5 31:开关灯 [题目考点] 1. 模拟 2. 循环.数组 3. 用逗号分隔输出 设标志位:isFirst,表示现在输出的是否 ...

  9. 信息学奥赛一本通 1073:救援 | OpenJudge NOI 1.5 19:救援

    [题目链接] ybt 1073:救援 OpenJudge NOI 1.5 19:救援 [题目考点] 1. 直角坐标系下某点到原点的距离 点(x,y)(x,y)(x,y)到原点的距离d=x2+y2d = ...

最新文章

  1. 医改大背景下的第三方检验行业发展趋势
  2. ETL异构数据源Datax_datax-web简述_09
  3. HDU 1596 find the safest road (最短路)
  4. 交换机中tag、untag的理解
  5. 1《游戏脚本高级编程》之命令脚本的随想
  6. win7计算机资源管理器卡住,win7系统资源管理器出现卡死现象的解决方法
  7. java读取pdf文档
  8. “十三五”公共安全规划涉及哪些安防概念?
  9. 完全免费最好的在线pdf转换成word免费版
  10. 优先队列式分支限界法,完成这n个任务在k个机器的最佳调度。
  11. 腾讯帝国的下坡路 | 畅言
  12. 安装zephyr流程与问题解决
  13. 渗透测试实用浏览器插件推荐
  14. 【20220629】【信号处理】(平稳随机信号)自相关函数性质的证明过程
  15. 推荐几个无需注册免费的PPT模板下载网站
  16. 2020牛客多校第八场E-Enigmatic Partition(隔项差分)
  17. java web 分享功能实现_微信开发(一)基于Wx-java的微信分享功能
  18. 隐藏电脑桌面desktop.ini文件图标方法
  19. 实现以form-data参数发送post请求
  20. jquery实现图片的跑马灯效果

热门文章

  1. C#编程语言(七):值类型与引用类型
  2. postgresql,pgadmin4安装后出错,界面只有文字
  3. 屠杀机器人和无处不在的监控:AI是我们最大的生存威胁?
  4. angular input_快速地上手Angular组件开发
  5. python 函数图_如何查看Python函数调用图 Ubuntu
  6. 【阿里内推001期】听说你要做中台,阿里中台部门招Java开发
  7. 教你使用Vue.js的DevTools来调试你的vue项目
  8. 【JEECG技术文档】数据权限自定义SQL表达式用法说明
  9. 绿色日期控件皮肤 My97 DatePicker
  10. 使用Spring Boot来加速Java web项目的开发