【悬关】TLE求助
查看原帖
【悬关】TLE求助
785639
xuchuhan楼主2024/5/18 15:55

rt,应该是二分死循环了

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5,eps=1e-3;
int n,k;
double a[N],b[N],c[N];
bool cmp(double x,double y){
	return x>y;
}
bool check(double mid){
	for(int i=1;i<=n;i++)
		c[i]=a[i]-b[i]*mid;
	sort(c+1,c+n+1,cmp);
	double s=0;
	for(int i=1;i<=n-k;i++)
		s+=c[i];
	return s>0;
}
int main(){
	while(cin>>n>>k){
		for(int i=1;i<=n;i++){
			cin>>a[i];
			a[i]*=100;
		}
		for(int i=1;i<=n;i++)
			cin>>b[i];
		double l=0,r=1e9;
		while(r-l>eps){
			double mid=(l+r)/2.0;
			if(check(mid))
				l=mid;
			else
				r=mid;
		}
		cout<<r;
	}
	return 0;
}
2024/5/18 15:55
加载中...