Zut round 7 二分答案

2021-10-05 05:52:49 字數 1502 閱讀 9613

**

二分答案的基本思路,對所求數值的所在範圍進行二分查詢,對特定數值進行判斷是否符合要求。

但是難點在於f(x)函式,要根據題目來寫。

a - 二分(經典題)(*)(最大化最小值)

fun函式內貪心判斷,設兩個指標,找到最近的前面的不小於後面的位置座標,,m-1頭牛全部找到即可。

#include

#include

using

namespace std;

int n,c;

int a[

100005];

bool

fun(

int x)

if(t2==n)

t1=t2//找到的話進行位置的更新

return

true;}

intmain()

sort

(a,a+n)

;int minn=

0,maxx=a[n-1]

,mid;

while

(maxx-minn>1)

cout

}

b - 二分(*)

#include

#include

using

namespace std;

char a[

200005

],b[

200005];

int del[

200005

],vis[

200005];

int la,lb;

intfun

(int mid)

int now=0;

for(

int i=

0;i}if

(now==lb)

return1;

else

return0;

}int

main()

int ans=-1

,l=0

,r=la-1;

while

(r-l>=0)

else

} cout<1

}

d - snowball

直接模擬一遍

#include

using

namespace std;

intmain()

cout

}

e - squares and segments

長與寬越接近,可以使得面積最大,長與寬的和最小。

所以比較長寬的大小,小的那個進行加一處理。

#include

using

namespace std;

int n,w=

1,h=1;

intmain()

cout

}

二分查詢與二分答案

主要用於在乙個單調的函式中查詢某值 連續函式的情況 若當前查詢的區間是 l,r 查詢的值是 y 函式單增 設 mid l r 2 若 f mid y 則 l mid,否則 r mid 直至 r l eps 當前查詢的區間是 l,r 查詢的值是 y 函式單增 設 mid l r 2 若 f mid y...

二分查詢和二分答案

1.解釋 優點 查詢速度快。缺點 待查表為有序表。4.時間複雜度 o log n 5.示例 p2249查詢 include include using namespace std long long n,m,a 1000005 b 100005 l,r,mid,cnt,x intmain for i...

二分與二分答案學習

判斷left,mid,right的符號進行區間的精確。如下為遞迴二分求零點的操作 double find zero point double left,double right,double precesion double mid right left 2 if f mid 0 if f mid ...