1 条题解

  • 0
    @ 2025-2-14 21:11:41

    C++ :

    
    
    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include <cmath>
    #define N 10005
    using namespace std;
    
    int w[N],v[N];
    double tmp[N];
    int n,k;
    double tryit(double m)
    {
    	for(int i=0;i<n;i++)
            tmp[i] = v[i] - w[i]*m;
    	sort(tmp,tmp+n);
    	double sum = 0;
    	for(int i=n-1;i>=n-k;i--)
            sum += tmp[i];
    	return sum;
    }
    int main()
    {
    	while(~scanf("%d %d",&n,&k)){
    		double t,l = 0,r = 0;
    		for(int i=0; i<n; i++){
    			scanf("%d %d",&w[i],&v[i]);
    			t = v[i]*1.0/w[i];
    			r = t > r ? t : r;
    		}
    		while(fabs(r-l)>1e-4){
    			double m = (r+l)/2;
    			if(tryit(m)>=0)
                    l = m;
    			else r = m;
    		}
    		printf("%.2lf\n",l);
    	}
    	return 0;
    }
    
    
    • 1

    信息

    ID
    704
    时间
    3000ms
    内存
    64MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者