二分查詢的作用是將o(n)的複雜度變成o(logn)
mid = l+r >> 1 整數右移一位即相當於除以二
若為浮點數則寫作(1+r)/2
pi的定義:#define pi acos(-1.0)
const double eps = 1e-6
while( l+eps
二分題目a:在1到100中尋找能滿足制定式子的數,保留四位小數
#include
#include
#include
#include
#include
#include
#include
//冪函式pow()標頭檔案
const
double eps=
1e-6
;using
namespace std;
int t;
double n;
double ans1;
bool
check1
(double x)
intmain()
else
l=mid;
} cout
)<"\n"
;//保留四位小數(fixed)的意思是若無零則自動補零}}
return0;
}
二分題目b:在數列中找到能夠符合兩項相加等於規定數字的個數
#include
#include
#include
#include
#include
const
int maxn=
1e6+9;
using
namespace std;
int t,n,k;
int a[maxn]
;int ans1;
bool
check
(int x)
return0;
}int
main()
} cout<"\n";}
return0;
}
二分題目c:將牛放入馬廄中,求最小值中的最大值
#include
#include
#include
#include
#include
#include
#include
#define pi acos(-1.0)
const
int maxn=
1e6+9;
const
double eps=
1e-6
;using
namespace std;
int n,c;
int a[maxn]
;bool
check
(int x)}if
(num>=c)
return1;
else
return0;
}int
main()
cout<1<<
"\n"
;return0;
}
二分查詢d:分蛋糕
#include
#include
#include
#include
#include
#include
#define pi acos(-1.0)
const
int maxn=
1e6+9;
using
namespace std;
const
double eps=
1e-6
;double a[maxn]
;int n,f,t;
double ans1;
bool
check
(double x)
if(n1>=f+1)
return1;
else
return0;
}int
main()
sort
(a,a+n)
;double l=
0,r=a[n-1]
*a[n-1]
*pi;
//在最大體積和最小體積間找可能滿足情況的體積
double ans1=0;
while
(l+eps//無限逼近
else
r=mid;
} cout
)<"\n";}
return0;
}
二分查詢e:牛跳石頭,在n塊石頭中取m塊,再求最小值的最大值
#include
#include
#include
#include
#include
#include
#include
//#define pi acos(-1.0)
const
int maxn=
1e6+9;
const
double eps=
1e-6
;using
namespace std;
int l,m,n,l;
int a[maxn]
;int
main()
if(num>m)
r=mid-1;
else
l=mid+1;
} cout
}
迭代二分查詢二分查詢
在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...
1128 二分 二分查詢
時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...
二分查詢及變種二分查詢
二分查詢也稱折半查詢 binary search 它的查詢效率很好。二分查詢有乙個要求是必須採用順序儲存結構,而且表種的元素是有序的。只有滿足這個條件我們才能使用二分查詢。查詢條件 查詢區域的左邊界,小於等於查詢區域的右邊界 查詢過程 1.迴圈條件 查詢條件 2.計算序列中間下標位置 3.如果待查詢...