求助
  • 板块P1577 切绳子
  • 楼主_JF_殉情
  • 当前回复7
  • 已保存回复7
  • 发布时间2022/5/20 18:54
  • 上次更新2023/10/28 01:02:53
查看原帖
求助
361141
_JF_殉情楼主2022/5/20 18:54
#include<bits/stdc++.h>
using namespace std;
const int N =1e6+10;
double a[N];	
double n,m;
bool check(double k)
{
	double sum=0.0;
	for(int i=1;i<=n;i++)
	{
		if(a[i]>=k)
			sum+=a[i]/k;
	}
	if(sum>=m)
		return true;
	else
		return false;
}
double find()
{
	double l=1.0,r=100000.0;
	while(l+1.0<r)
	{
		double mid=(l+r)/2.0;
		if(check(mid))
			l=mid;
		else
			r=mid;
	}
	return l;
}
int main()
{
	cin>>n>>m;
	for(int i=1;i<=n;i++)
		cin>>a[i];
	cout<<fixed<<setprecision(2)<<find()<<endl;
}

二分答案好像不太行?

2022/5/20 18:54
加载中...