PAT|木棒切割问题(二分)---算法笔记4.5.2二分法拓展

PAT|木棒切割问题(二分)---算法笔记4.5.2二分法拓展
文章图片

#include #include #include using namespace std; const int maxn = 10010; int main() { int a[maxn]; int n,k; cin >> n; cin >> k; for(int i=0; i> a[i]; } sort(a, a+n); int left = 0, right = a[n-1], mid; while(left+1 < right) { int count = 0; mid = (left + right) / 2; for(int i=0; i

【PAT|木棒切割问题(二分)---算法笔记4.5.2二分法拓展】套用的二分搜索的模板
int solve(int A[], int left, int right, int x) { int mid; while(left + 1 < right) { mid = (left + right) /2; if(条件成立) {//条件成立,第一个满足条件的元素的位置<=mid right = mid; //往左子区间 [ left , mid ] 查找 } else {//条件不成立,则第一个满足该条件的元素的位置>mid left = mid; //往右子区间 [ mid , right ] 查找 } } return right; //返回夹出来的位置 }

    推荐阅读