社区讨论

听说灌水区大佬多

灌水区参与者 5已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
11 条
当前快照
1 份
快照标识符
@lo16leum
此快照首次捕获于
2023/10/22 16:02
2 年前
此快照最后确认于
2023/11/02 15:37
2 年前
查看原帖
P3743,95pts求调
CPP
#include<bits/stdc++.h>
using namespace std;
int n;
double p;
const int N=1e6+10;
double a[N],b[N];
double ans=-1;
double sum[N];
bool check(double x){
    double s=p*x;
    for(int i=1;i<=n;i++){
    	if(b[i]>=a[i]*x)continue;
    	s-=a[i]*x-b[i];
	}
	return s>=0;
}
int main(){
	double sump=0;
	cin>>n>>p;
	for(int i=1;i<=n;i++){
		cin>>a[i]>>b[i];
	}
	for(int i=1;i<=n;i++){
		sump+=a[i];
	}
	if(sump<=p){
		cout<<-1;
		return 0;
	} 
	double l=1e-9,r=100000,mid;
	while(r-l>=1e-9){
		mid=(l+r)/2;
		if(check(mid)){
			ans=max(mid,ans);
			l=mid+1e-9;
		}
		else r=mid-1e-9;
	}
	cout<<ans;
	return 0;
} 

回复

11 条回复,欢迎继续交流。

正在加载回复...