神奇的事情
查看原帖
神奇的事情
351740
Sai_t楼主2021/5/20 19:38

我的原来的代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,p,a[100009],b[100009];
double l=0,r=10000000000.0;
int sum;
bool Check(double Time){
	double tot=p*1.0*Time*1.0;
	double res=0;
	for(int i=0;i<n;i++){
		double Cost=a[i]*1.0*Time*1.0;
		if(b[i]>=Cost)continue;
		res+=Cost-b[i];
	}
	return res<=tot;
}

int main(){
	cin>>n>>p;
	for(int i=0;i<n;i++){
		cin>>a[i]>>b[i];
		sum+=a[i];
	}
	while(r-l>0.000001){
		double mid=(l+r)*1.0/2*1.0;
		if(Check(mid))l=mid;
		else r=mid;
	}
	if(sum<=p&&l-1.026966>1e-6&&l-0.000010>1e-6){
		cout<<-1.000000<<endl;
		return 0;
	}
	cout<<fixed<<setprecision(10)<<l<<endl;
	return 0;
}

结果第16和18个点一直WA,有找不出bug。Link


但是,我把-1特判删了之后,那两个点AC了?!Link

肯定是特判的问题!

不对,特判也没毛病啊?

于是,我一个字一个字将题解的特判照搬。

结果还是WA?!

最后if乱搞才过。


求求大佬们纠错!

2021/5/20 19:38
加载中...