博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第三章 poj 1064——关于带精度的二分法
阅读量:7066 次
发布时间:2019-06-28

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

/*   题意:给定n个实数l[i],给定一个k   问:求最大的ans,使得sum l[i]/ans i=1 to n >=k,且ans最大 */ #include 
#include
#include
#define range(i,a,b) for (int i=a;i<=b;i++)using namespace std;const int maxn = 10000;int n,k;double l[maxn+1];double max(double a,double b){ return a>b ? a : b;}bool check(double val){ int ans(0); range(i,1,n) ans += (int)(l[i]/val); return ans>=k;}int main(){ double left(0),right(0);//假如这两个定义到全局,则会显示reference to right is ambiguous //注意初始化,left本来是初始化为1的,但是这样是错的因为可能存在小于1的答案 cin>>n>>k; range(i,1,n) { scanf("%lf",&l[i]); right = max(right,l[i]); } range(c,1,1000) { double mid = (left+right)/2; if (check(mid)) { left = mid; } else { right = mid; } } printf("%.2f\n",floor(right*100)/100); return 0; //WA}

 

  进行100次循环,每次二分,精度为lenmax>>100。

      本例中N=10000,所以大概为1*e-27左右吧。

转载于:https://www.cnblogs.com/dandi/p/3972213.html

你可能感兴趣的文章
golang使用oracle碰到go/lib/time/zoneinfo.zip: no such file or directory
查看>>
quartz定时任务时间设置描
查看>>
ES6常用语法
查看>>
https://www.jianshu.com/p/dbffae16ba0b
查看>>
微信,QQ这类IM app怎么做——谈谈Websocket
查看>>
在Ubuntu 11.04中安装Openresty
查看>>
JAVA常见的面试题
查看>>
《Python高效开发实战》实战演练——建立应用2
查看>>
java: -source 1.6 中不支持 switch 中存在字符串.....
查看>>
Confluence 6 空间
查看>>
lua-resty-http上传数据
查看>>
heartbeat+ldirectord实现web与dns的高可用性
查看>>
luacurl安装
查看>>
JBoss的配置
查看>>
软件测试之Web实战测试
查看>>
Tomcat的参数配置及一般问题的解决
查看>>
JAVA CAS原理深度分析
查看>>
O2O?啥是“呕吐呕”?
查看>>
百度的疯狂 UC的隐忍
查看>>
我的友情链接
查看>>