今日题目: 砍树
题目分析
题目难度:⭐️⭐️
题目涉及算法:数学,奥数,二分。
ps:有能力的小伙伴可以尝试优化自己的代码或者一题多解,这样能综合提升自己的算法能力
题解报告:
1.思路
简单二分 记得longlong java快读
2.代码
#include<bits/stdc++.h> using namespace std; long long s=0,mid,l,maxx,a[1000001]; int main() { long long n,m; cin>>n>>m; for(int i=1;i<=n;i++) { cin>>a[i]; if(a[i]>maxx) { maxx = a[i]; } } while(l<=maxx) { mid=(l+maxx)/2; s=0; for(int i=1;i<=n;i++) { if(a[i]>mid) { s+=a[i]-mid; } } if(s<m) { maxx = mid - 1; } else { l = mid + 1; } } cout<<l-1; return 0; }