蒟蒻95分求助~!
查看原帖
蒟蒻95分求助~!
220227
我就是天帝楼主2020/7/27 16:48

#17 T了

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
const int N=100086;
int n;
double p,l,r,a[N],b[N];
inline int read()
{
	int x=0,f=1;char c=getchar();
	while(c<'0'||c>'9'){if(c=='-')f=-f;c=getchar();}
	while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
	return x*f;
}
bool check(double k)
{//k是时间数 
	double ans=p*1.0*k;//算出总的充电量
	for(int i=1;i<=n;i++)
	{
		if(b[i]<a[i]*k)
		{//如果自身供电不足 
			ans=ans-(a[i]*k-b[i]);
		}
	}
	if(ans>=0)
		return true;
	return false;
}
int main()
{
	r=0x7f7f7f7f7f7f7f7f;
	n=read(),p=read();
	for(int i=1;i<=n;i++)
	{
		int A=read(),B=read();
		a[i]=A*1.0,b[i]=B*1.0;
	}
	while(l+1e-6<r)
	{
		double mid=(l+r)/2;
		if(check(mid))
		{
			l=mid;
		}
		else
		{
			r=mid;
		}
	}
	if(r==0x7f7f7f7f7f7f7f7f)
		printf("-1");
	else
		printf("%.10lf",r);
	return 0;
}
2020/7/27 16:48
加载中...