牛客第五场 A gpa
01分数规划的模本题
比赛贪心,贪了半天,最后队友想起这是01分数规划的题
发现自己的盲区。。。
01分数规划可以解决 01分数规划、最优比率生成树问题、最优比率环问题、最大密度子图等问题
01分数规划的详细讲解 这篇博客讲解的很好
AC 代码
#include <bits/stdc++.h> using namespace std; const int N = 1e5+10; double s[N],c[N],d[N],l = 0.0,r = 0.0; int n,k; const double eps = 1e-5; int check(double L) { for(int i = 1;i <= n;i++) d[i] = s[i]*c[i] - L*s[i]; sort(d+1,d+n+1); double ans = 0; for(int i = k+1;i <= n;i++) ans += d[i]; return ans > 0; } void solve() { while(l+eps<r) { double mid = (l+r)/2; if(check(mid)) l = mid; else r = mid; } printf("%.10lf\n",r); } int main() { scanf("%d%d",&n,&k); for(int i = 1;i <= n;i++) scanf("%lf",&s[i]); for(int i = 1;i <= n;i++) scanf("%lf",&c[i]),r = max(r,s[i]*c[i]); solve(); return 0; }