做網(wǎng)站除了域名還需要什么免費廣告發(fā)布平臺
P1873 [COCI2011-2012#5] EKO / 砍樹 - 洛谷 | 計算機科學(xué)教育新生態(tài) (luogu.com.cn)
這個題就是給新手練手的,在那個位置上在進行,尋找合適的砍樹高度,下面在介紹一個二分查找的模板
int binarySearch(vector<int>& nums, int target) {int left = 0;int right = nums.size() - 1;while (left <= right) {int mid = left + (right - left) / 2;if (nums[mid] == target) {return mid; // 找到目標(biāo)值,返回索引} else if (nums[mid] < target) {left = mid + 1; // 目標(biāo)值在右半部分,更新左邊界} else {right = mid - 1; // 目標(biāo)值在左半部分,更新右邊界}}return -1; // 沒有找到目標(biāo)值
}
#include<bits/stdc++.h>
using namespace std;
long long n,m,tree[1000000+10],l,r,mid;
int main()
{scanf("%ld%ld",&n,&m);for(long long i=1;i<=n;i++){scanf("%lld",&tree[i]);r=max(tree[i],r);}while(l<=r){mid=(r+l)>>1;long long temp=0;for(int i=1;i<=n;i++){if(tree[i]>mid){temp+=tree[i]-mid;}}if(temp<m){r=mid-1;}else l=mid+1;}printf("%lld",r);return 0;
}
這個代碼的奇特之處在于這個temp的更新,不斷的在中間位置靠攏,雖然這個也是二分查找的思想但是在這本蒟蘿也想了好久