01 Fractional Planning
#include <bits/stdc++.h>using namespace std; #define for (I,n) for (int. i=1;i<=n;i++) #define FORK (i,k,n) for (int i=k;i<=n;i++) #define REP (I,n) for (int. i=0;i<n;i++) #define ForD (I,n) for (int. i=n;i;i--) #define FORKD (I,k,n) for ( int i=n;i>=k;i--) #define MAXN (200000) #define EPS (1e-6) int t;int F[MAXN],G[MAXN];d ouble e[maxn];int Main () {// Freopen ("Model2.in", "R", stdin);cin>>t; for (kcase,t) {int n,k;scanf ("%d%d", &n,&k); for (I,n) scanf ("%d", &f[i]); for (I,n) scanf ("%d", &g[i]); for (I,n) f[i]*=g[i];d ouble l=0,r=100;while ((r-l) >eps) {double m= (r+l)/2,ans=0; for (I,n) e[i]= (double) f[i]-m* (double) g[i];sort (e+1,e+1+n); FORKD (I,k+1,n) ans+=e[i]; ForD (i,k) {if (e[i]>0) Ans+=e[i];else break;} if (ans>=0) L=m;else r=m;} printf ("Case #%d:\n%.3lf\n", kcase,l);} return 0;}
Chang ' An (Hack-01 fractional planning)