博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POJ 1064 Cable master(二分答案)
阅读量:5325 次
发布时间:2019-06-14

本文共 1161 字,大约阅读时间需要 3 分钟。

嗯...

 

题目链接:

 

其实这是一道很好想的二分答案的一道题...

 

二分的区间就是1~max_l,从1开始是因为所有小于1的都需要按0计算,没必要讨论了...

每次二分出来的答案看它能否把电缆切成大于等于k块,如果可以,我们不能保证它是最优的答案,所以要向更大的地方二分;如果现在都不可以,我们必须向更小的地方二分,才有可能可以。

 

这道题注意二分一般在整数中二分,所以我们先把它们都乘100,如果要求精度更高,则乘的数更大,然后再整数二分,最后输出的时候再除回去即可...注意初始化...

 

AC代码:

1 #include
2 #include
3 4 using namespace std; 5 6 int ans, n, k, a[10004], max_l; 7 8 inline void er_fen(){ 9 int l = 1, r = max_l;10 while(l <= r){11 int cnt = 0;12 int mid = (l + r) >> 1;13 for(int i = 1; i <= n; i++){14 cnt += a[i] / mid;15 }16 if(cnt >= k){17 ans = max(ans, mid);18 l = mid + 1;19 }20 else r = mid - 1;21 }22 }23 24 int main(){25 while(scanf("%d%d", &n, &k) != EOF){26 max_l = -1, ans = 0;27 for(int i = 1; i <= n; i++){28 double len;29 scanf("%lf", &len);30 a[i] = len * 100;31 max_l = max(max_l, a[i]);32 }33 er_fen();34 printf("%.2f\n", (double) ans / 100.0);35 }36 return 0;37 }
AC代码

 

转载于:https://www.cnblogs.com/New-ljx/p/11336735.html

你可能感兴趣的文章
深入理解基于selenium的二次开发
查看>>
较快的maven的settings.xml文件
查看>>
Git之初体验 持续更新
查看>>
Exception in thread "AWT-EventQueue-0" java.lang.IllegalThreadStateException
查看>>
随手练——HDU 5015 矩阵快速幂
查看>>
启动redis一闪就关
查看>>
Maven之setting.xml配置文件详解
查看>>
ASP.NET 4.5 Web Forms and Visual Studio vs2013年入门1
查看>>
SDK目录结构
查看>>
malloc() & free()
查看>>
HDU 2063 过山车
查看>>
高精度1--加法
查看>>
String比较
查看>>
Django之Models
查看>>
CSS 透明度级别 及 背景透明
查看>>
Linux 的 date 日期的使用
查看>>
PHP zip压缩文件及解压
查看>>
SOAP web service用AFNetWorking实现请求
查看>>
Java变量类型,实例变量 与局部变量 静态变量
查看>>
mysql操作命令梳理(4)-中文乱码问题
查看>>