陣列有序
尋找目標數字x
int maxn =
110;
int a[maxn]
;int
binary
(int left,
int right,
int x)
return-1
;// 最終沒有找到相等
}
尋找第乙個大於等於數字x的數字"["
int
lower_bound
(int a,
int left,
int right,
int x)
return left;
}
尋找第乙個大於數字x的數字"("
int
upper_bound
(int a.
int left,
int right,
int x)
return left;
}
上述得出的位置-1即可得最後乙個等於數字x的數字位置
模板:尋找有序序列中第乙個滿足條件的元素位置
int
func
(int a.
int left,
int right,
int x)
return left;
}
拓展:
求√2
const
double eps =
1e-5
;doublef(
double x)
double
sqrt()
return mid;
}
求函式的根
const
double eps =
1e-5
;doublef(
double x)
double
sqrt
(double left,
double right)
return mid;
}
快速冪
typedef
long
long ll;
// a^b % m 遞迴法
ll binarypow
(ll a, ll b, ll m)
}// a^b % m 迭代法
ll pow
(ll a, ll b, ll m)
a = a * a % m;
b >>=1;
}return ans;
}
二分法相關
浮點數的二分 例題 題目描述 告訴你圓台的高h,下地面半徑r,和上底面半徑r 你需要平行於地面切割圓台,使切割後的圓台上下兩部分相等,輸出切割平面的高度h 切割平面與 上 底面的距離 輸入第一行乙個t表示t組資料,每組資料三個整數h,r,r t 10 1 r,r,h 100 輸出如題所述輸出乙個浮點...
二分法相關
如何去使用二分搜尋去有序陣列大於等於某個數的最左側位置 二分如何考慮?用中點值和target比較 如果是大於等於target 如果是小於target public class bsleft public static int bsleft int array,int target else retu...
二分法相關題目
一般用法 public intbinarysearch int nums,int key else if nums m key else return 1 二分法的時間複雜度為o logn 變種 例如在乙個有重複元素的陣列中查詢 key 的最左位置的實現如下 public intbinarysear...