标签:font int double style 最优 code str 答案 while
普通01分数规划
由n个物品,每个物品由两个属性a和b,选出k个物品,使Σai / Σbi 的值最大
设x=Σai / Σbi, F()=Σa-xΣb, D()=a-xb
当F()=0时,则为答案;当F()>0时,则说明答案小了;当F()<0时,则说明答案大了
二分答案
double l=0,r=1.0,mid; while(r-l>1e-5) { mid=(l+r)/2; if(work(mid)) l=mid; else r=mid; } int work(double x) { for(int i=0;i<n;i++) d[i]=a[i]-x*b[i]; sort(d,d+n); double F=0; for(int i=n-1;i>=n-k;i--) F+=d[i]; return F>=0; }
最优比率生成树
最优比率生成环
01分数规划+树形背包
标签:font int double style 最优 code str 答案 while
原文地址:https://www.cnblogs.com/wronin/p/11618759.html