『ACM-算法-二分法』算法竞赛进阶指南--在单调递增序列a中查找大于等于X的数中最小的一个,即X或X的后继
生活随笔
收集整理的這篇文章主要介紹了
『ACM-算法-二分法』算法竞赛进阶指南--在单调递增序列a中查找大于等于X的数中最小的一个,即X或X的后继
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
寫在前面:我們主要還是分享算法的模板,而不是去刨析算法的原理!
定義: 二分答案是指在答案具有單調(diào)性的前提下,利用二分的思想枚舉答案,將求解問題轉(zhuǎn)化為驗(yàn)證結(jié)果。
流程:
首先需要估計(jì)答案的上下界,然后不斷取區(qū)間中點(diǎn)進(jìn)行驗(yàn)證(這就要求答案的驗(yàn)證應(yīng)當(dāng)簡(jiǎn)單可行),并通過驗(yàn)證結(jié)果不斷更新答案區(qū)間,最終得到答案。不難看出,樸素的枚舉驗(yàn)證時(shí)間復(fù)雜度是O(n)的,而二分可以做到O(logn)
特征:
1.答案具有單調(diào)性
2.二分答案的問題往往有固定的問法,比如:令最大值最小(最小值最大),求滿足條件的最大(小)值等。
實(shí)現(xiàn):
while (l < r) {int mid = (l + r) / 2;if (a[mid] >= x) r = mid; else l = mid + 1; }總結(jié)
以上是生活随笔為你收集整理的『ACM-算法-二分法』算法竞赛进阶指南--在单调递增序列a中查找大于等于X的数中最小的一个,即X或X的后继的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 眼镜上市公司有哪些
- 下一篇: 『ACM-算法-二分法』信息竞赛进阶指南