关于二分的心得
来源:互联网 发布:js 语音波形图 编辑:程序博客网 时间:2024/04/29 17:41
以前就做过一些有关二分的题目,但最近这段时间再次做二分时,发现自己有时候还是会犯一些同样的错误,因此觉得是时候该总结一下了。
1.实数
对于实数问题,我们的循环结束条件是up-low>eps,其中eps是我们定义的控制精度的一个常量,具体取多少根据情况而定(一般取1e-6就够了);PI要取acos(-1.0)。然后就是在计算时要注意精度丢失问题,尽量避免除法和三角函数运算;另外我们最好直接二分要求的结果,而不要设置中间变量,因为从 中间变量->结果 这一步计算很有可能就会产生较大误差。
while(up-low>eps){ mid=(low+up)/2; if(condition==true) low=mid; else up=mid;}
(ps:对于g++编译器和c++编译器,前者输出函数printf中用%f,而后者用%lf,切记!!!)
2.整数
整数唯一的好处就是不用考虑精度问题了,说实话本人也较喜欢这类问题。但整数还需要注意一个细节,
就是等号的处理,这点必须要考虑清楚,如果相等,到底是处理low还是处理up,这个要结合题意来看。另外为了使循环能终止,我更倾向于下面这种写法,最后结果取up,当然仅供参考。
while(up>low) { mid=(low+up)>>1; int step=jump(mid);//因为此处只是截取的部分代码,所以不必深究jump函数 if(step>m) low=mid+1; else up=mid; }
- 关于二分的心得
- 关于二分图判定的心得(参考挑战程序设计)
- 关于创作的心得
- 关于软件设计的心得
- 关于管理的心得
- 关于SEO的心得
- 关于测试的心得
- 关于数据库连接的心得
- 关于emacs的心得
- 关于ETW的心得
- 关于打印质量的心得
- 关于线程的心得
- 关于工作的心得。
- 关于maven的心得
- 二分查找法的一些心得
- 关于二分图的
- 关于日期转换的心得
- 关于emule的使用心得
- C++文件读写/怎么判断是否到了结尾
- HDU 1872稳定排序优先队列
- 堆和栈的区别
- 关于Qt4.3与vs2005的集成(自己留着学习)
- 使用FileInputStream和FileOutputStream实现图片反色
- 关于二分的心得
- 我遇到的socket tcp/ip问题
- ZStack API解读
- asp.net获取URL和IP地址(转)
- 石锅拌饭的个人主页
- Linux Ubuntu 下如何创建,编辑和运行*.tcl文件
- Yii: MySql - Table 'card' was not locked with LOCK TABLES
- 代码段之RSS
- MYSQL数据库由latin1转换为utf8