参考的事这个博客
#include <set> #include <map> #include <queue> #include <math.h> #include <vector> #include <string> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <iostream> #include <algorithm> #define eps 1e-7 using namespace std; int n,k; double a[1005],b[1005],t[1005]; double does(double num) { for(int i=0;i<n;i++) { t[i]=a[i]-num*b[i]; } sort(t,t+n); double sum=0.0; for(int i=k;i<n;i++) { sum+=t[i]; } return sum; } int main() { while(scanf("%d%d",&n,&k),n||k) { for(int i=0;i<n;i++) { scanf("%lf",&a[i]); } for(int i=0;i<n;i++) { scanf("%lf",&b[i]); } double l=0.0,r=1.0,mid; while(r-l>eps) { mid=(l+r)/2; if(does(mid)>0)l=mid; else r=mid; } printf("%.0f ",l*100); } return 0; }