三分算法
2016-08-14 20:20
197 查看
前言
在自从gdoi2016被第一题的三分虐了后,再次接触三分,其实不难。三分算法解决凸形或者凹形函数的极值。
流程
令lmid=l+r−l3,rmid=r−r−l3
当lmid在函数上的值小于rmid时将l更新为lmid;
当rmid在函数上的值小于lmid时将r更新为rmid;
直到l>=r。
原理
当lmid在函数上的值小于rmid时,易证lmid一定在极值的左边,所以将l更新为lmid。同样当rmid在函数上的值小于lmid时,易证rmid一定在极值的右边,所以将r更新为rmid。
通过这样来一次次缩小(l,r)的范围。
code
double l=0,r=n; while(l+0.001<=r) { double mid1=l+(r-l)/3,mid2=r-(r-l)/3; if(a[mid1]<a[mid2]) l=lmid; else r=rmid; }
推荐一道好题,
【NOIP2016提高A组模拟8.14】传送带
相关文章推荐
- 二分三分算法专项训练
- 三分算法
- 三分算法
- 三分算法
- 三分算法(解决先增后减或先减后增的搜索方法)
- 三分算法
- 算法录 之 二分和三分
- 偷来的三分算法(苟神)
- 【算法与数据结构】三分查找
- HDU 4355 Party All the Time (三分算法的应用(含三分算法的讲解))
- poj3301 Texas Trip【三分算法】
- 三分算法及利用三分算法求解二次函数问题
- HDU 2298 Toxophily 【三分算法 or 直接推导物理公式】
- 紫书第八章-----高效算法设计(二分查找、尺取法/滑动窗口法、三分查找)
- 算法笔记--二分/三分
- 2013湘潭赛 Hurry Up 三分算法
- USACO 6.4.2 Electric Fences 三分算法
- HDU 4355 (三分算法基础)
- 【算法与数据结构】三分查找
- hihocoder 1142 三分求极值【三分算法 模板应用】