二分法
大一的刚学c语言的时候就学了二分法,之前也感觉用处一般,不是很大,最近做了一些题,确实不能小看二分法,关于二分法STL里面有现成的lower_bound方法,我之前的文章,提到过
二分法做的题还是不少,可以分为最大化最小值,最大化平均值,主要思想就是本来一些问题必须要用挨个枚举解决的,而且正好这些枚举得数又是有序的,所以这时候就可以通过二分法提升一下效率了
有如下一些题
poj1064
poj2456
poj3273
poj3258
poj2976
poj3122
poj3111
poj3122
这道题还是用那种思路,但是有个小问题,就在于题目要求了误差最多正负0.001,然后如果这时候我们自己手写π,比如我就是自己直接写的3.1415926,我还感觉我这儿小数点后都有7位了,随便够用了,但是举个反例测试数据
/*
1
3 1
10000 10000 10000
*/
如果π = 3.1415926的话结果为

但如果我们用c++定义的π = 3.1415926535897931

这个就正好不符合题目要去的最小误差。。。所以以后用π的时候,要用系统提供的#include<cmath>,然后就是用系统定义的常量M_PI,但是我在poj上面他居然说没有定义,多半有事g++和c++的区别

所以以后要用π的时候最好就现在控制台打印出来,然后自己复制到代码中,通过#define定义
#define PI 3.1415926535897931
还有就是double 如果小数点后4位,出的时候会出现误差,比如16 / 8.00001 = 2

602

被折叠的 条评论
为什么被折叠?



