1 条题解
-
0
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
- 上传者