WAzidongji:二分就是二分最后的答案,对当前的答案判断是否可以满足分成m条的条件,根据结果收缩二分的区间,当区间左右端点差值很小的时候,可以近似认为这就是最后的答案。 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n, m;
double a[1000010];
const double eps = 1e-4;
bool ok(double x)
{
int cnt = 0;
for(int i = 0; i < n; i++)
{
cnt += a[i] / x;
}
return cnt >= m;
}
int main()
{
cin >> n >> m;
for(int i = 0; i < n; i++)
{
cin >> a[i];
}
double l = 0, r = 1e9 + 77;
while(l + eps < r)
{
double mid = (l + r) / 2;
if(ok(mid)) l = mid;
else r = mid;
}
printf("%.2f\n",l);
return 0;
}
0 点赞 评论 收藏
分享
创作者周榜
更多
关注他的用户也关注了: