ACM——二分、三分
二分算法模板:
二分的思想不说了,在这里主要写一下自己的模板。
1.算法竞赛中:
2.ACwing——yxc
bool check(int x) {/* ... */} // 检查x是否满足某种性质// 区间[l, r]被划分成[l, mid]和[mid + 1, r]时使用:
int bsearch_1(int l, int r)
{while (l < r){int mid = l + r >> 1;if (check(mid)) r = mid; // check()判断mid是否满足性质else l = mid + 1;}return l;
}
// 区间[l, r]被划分成[l, mid - 1]和[mid, r]时使用:
int bsearch_2(int l, int r)
{while (l < r){int mid = l + r + 1 >> 1;if (check(mid)) l = mid;else r = mid - 1;}return l;
}
三分算法模板
1.整数的三分
凹函数:D - Freefall
dd f(int x)
{ ...........
}
dd three_div(int l,int r)
{while (r-l>2) {int midl=(l*2+r)/3,midr=(l+r*2)/3;if (f(midl)>=f(midr))l=midl;else r=midr;}double ans=a;for (int i=l;i<=r;i++) ans=min(ans,f(i));return ans;
}
凸函数:
dd f(int x)
{ ................
}
dd three_div(int l,int r)
{while (r-l>2) {int midl=(l*2+r)/3,midr=(l+r*2)/3;if (f(midl)<=f(midr))l=midl;else r=midr;}double ans=a;for (int i=l;i<=r;i++) ans=max(ans,f(i));return ans;
}
2.实数上的三分:
凹函数:
dd f(dd x)
{ ................
}dd three_div(dd l,dd r)
{while(r-l>=eps){dd midl=l+(r-l)/3,midr=r-(r-l)/3;if(f(midr)<=f(midl)) l=midl;else r=midr;}return l;
}
凸函数:
dd f(dd x)
{ ....................
}dd three_div(dd l,dd r)
{while(r-l>=eps){dd midl=l+(r-l)/3,midr=r-(r-l)/3;if(f(midr)>=f(midl)) l=midl;else r=midr;}return l;
}
结语 :
二分三分算法思想不难,但是难点是我们在比赛时怎么根据实际情况选出来正确的模板,平时练习和实践很重要!(部分图片来自(lyd)的算法竞赛)。
ACM——二分、三分相关推荐
- 2020牛客寒假算法基础集训营5:B.牛牛战队的比赛地(二分/三分)
整理的算法模板:ACM算法模板总结(分类详细版) 链接:https://ac.nowcoder.com/acm/contest/3006/B 来源:牛客网 题目描述 由于牛牛战队经常要外出比赛,因此在 ...
- uva 1463 - Largest Empty Circle on a Segment(二分+三分+几何)
题目链接:uva 1463 - Largest Empty Circle on a Segment 二分半径,对于每一个半径,用三分求出线段到线段的最短距离,依据最短距离能够确定当前R下每条线段在[0 ...
- 牛客算法課 (算法入門班) 二分, 三分, 01分數規劃
目录 NC19916[CQOI2010] 撲克牌 NC116564 [NOIP2012]借教室 K-th Number 三分思路 圆覆盖问题 传送带 01分数规划 小咪买东西 [USACO 2009 ...
- 算法笔记--二分/三分
while(left<=right){int mind=(left+right)>>1;if(...) return x;else if(...) left=mind+1;else ...
- ACM算法模板总结(分类详细版)
本文模均引用于y总的算法模板,网址:AcWing (转载请注明出处,本文属于持续更新ing.......biubiubiu......) 本人码风比起y总真的差远了,所以敲一遍后,还是想把y总的搬上来 ...
- 阿里云nginx服务器多站点的配置
Fighting! 欲戴皇冠,必承其重! 目录视图 摘要视图 订阅 [活动]Python创意编程活动开始啦!!! CSDN日报20170426 --<四无年轻人如何逆袭> [C ...
- python时钟罗盘酷炫代码_抖音上的时钟屏保,被我改造完用来表白
作者:爱编程的小和尚 原文链接:https://blog.csdn.net/Newbie___/article/details/105378852 抖音上很火的时钟屏保,被我改造完后用来准备准备准备表 ...
- 训练日志 2019.2.16
昨天 RMQ 和二分三分除了卡精度卡内存被恶心坏了之外感觉做的还行,尺取法之前听说过但没看过,晚上想补一补的结果又烧了...去医院挂了一晚上点滴... 今天早上打完点滴回来睡了一会,起来开始写线段树, ...
- 催化剂概念在管理领域的应用——来自项目管理群的讨论
催化剂概念在管理领域的应用 开场白 先声明一下,前面有朋友问到催化剂管理是什么?我没有回答.这倒不是故意卖关子.实在是当时一时性起,把自己的一点不成熟的管理尝试拿出来分享,没有充分的准备.所以,没敢贸 ...
最新文章
- ZOJ 2588 Burning Bridges 割边
- Fiori Elements - sap.ui.core.util.XMLPreprocessor2 - insert fragment
- 548B. Mike and Fun
- (2)vue.js介绍
- apusic6.0需要新项目需要改动文件
- 翻译: 4.4. 模型选择Model Selection、欠拟合Underfitting和过拟合Overfitting pytorch
- WAP,手机网站建站资料收集 - 老古董
- ORID焦点呈现法(Focused Conversation Method)
- iOS实现炫酷悬停交互视图
- 10个问题帮你瞬间化解面试中的尴尬,赢得面试官好感
- Efficient Net
- [深度学习]动手学深度学习笔记-15
- 分峰截幅c语言算法,光纤布拉格光栅传感解调中的寻峰算法.docx
- 古代银票里的加密知识
- html打开方式怎么没有,打开文件时右键菜单中没有“打开方式”怎么办?
- 歌评 Mondstadt Starlit 星光下的蒙德-陈致逸
- cocos2d中遇到棱形组成的方块进行点击判断位置
- CISP 相关知识点梳理
- 从零开始学架构——架构基础
- 有关前端的一些问题(一)