哥哥们,我好难受呀。为什么我的思路才过了4%,完全找不到错误的原因呀。
求助
#include <bits/stdc++.h> using namespace std; vector<int>v; bool solve(int k,int lim){// 寻找是否可以添加 k个数,仍然保持当前值为最大值。 int sum=0; for(int i=0;i<v.size();i++){ if(v[i]<lim){ sum=sum+(lim-v[i]); } } return sum>=k; } int main(){ int m,n,temp; cin>>m>>n; //v.assign(m,0); for(int i=0;i<m;i++){ cin>>temp; v.push_back(temp); } sort(v.begin(),v.end()); long long l=0; long long r=1e9; long long ans=0; while(l<r){ long long mid=l+r>>1; if(solve(n,mid)){// 枚举当前mid为最大值,当满足条件,就往右找最小的。 r=mid; ans=mid; } else l=mid+1; } cout<<ans<<endl; system("pause"); return 0; }
全部评论
(6) 回帖