C Convoy(整數二分)

2021-10-17 18:38:42 字數 649 閱讀 6418

這道題我直接好傢伙,方法就是二分時間,看看最短時間符不符合。

坑在於:

1.需要判斷a[i]是否等於0,不然有時候會re!

2.需要注意司機無論多少趟只能帶乙個。因為回來的時候也需要乙個人開車。

3.左右邊界盡量開到1e12。而且變數以防萬一都開long long,不然會超時。

#include

using

namespace std;

const

int n =

2e5+10;

long

long a[n]

;int n, m;

bool

judge

(long

long x)}if

(sum >= n)

return

true

;else

return

false;}

intmain()

sort

(a, a + n)

;long

long l =

0, r =

2e10+3

;while

(l < r)

cout << r << endl;

}

模版 整數二分

確定乙個區間,使得目標值一定在這個區間內 從題目中找到一種性質 根據上述的性質,具體可以把整數二分劃分為兩大類問題 第一類 目標值是前半段的右端點 將 l,r l,r l,r 分成 l,mid 1 l,mid 1 l,mid 1 和 mi d,r mid,r mid,r 如果mid midmi d處...

整數二分詳解

在公升序 無重複元素的陣列中,查詢值為k的元素的陣列下標 include include include using namespace std const int n 10 在給定陣列中查詢k值所在位置,若不存在則返回 1 l為二分下界,r為二分上界 intbinarysearch int a,i...

二分 整數二分和浮點數二分

一定是單調的才可以二分。找中間點 判斷是否滿足check函式 此函式需要自己根據題意調整,假設紅色區域為滿足check函式,說明mid在紅色區域內,此時要在mid到r之間找,l mid,否則r mid 1。由於此時l mid 所以中間點應為 l r 1 2 中間點mid l r 2 mid l r ...