01分数规划
issue是fw
19 years old, struggling in life, chasing daydreams.
展开
-
P4322 [JSOI2016]最佳团体(树上背包+01分数规划)
LINK 每个人有战斗力pip_ipi和招募费用sis_isi,现在想招募kkk个人使得∑pi∑si\frac{\sum p_i}{\sum s_i}∑si∑pi最大 同时满足要求若选了iii那么也必须选择rir_iri 特殊的,如果ri=0r_i=0ri=0,那么没有任何限制 比较明显的树形背包,按照依赖关系由iii向rir_iri连边 这样定义f[i][j]f[i][j]f[i][j]为在iii的子树中选择jjj个人的最大收益 收益是一个010101分数规划的形式,设f(r)=p−k∗原创 2021-04-02 18:59:00 · 233 阅读 · 0 评论 -
P3288 [SCOI2014]方伯伯运椰子(01分数规划+流量守恒)
传送门 最大化x−yk\frac{x-y}{k}kx−y 设函数f(r)=r∗k+(y−x)f(r)=r*k+(y-x)f(r)=r∗k+(y−x) 不同的调整方案对应不同的直线 那么二分答案midmidmid,做直线x=midx=midx=mid 若存在交点的yyy座标小于零说明最优解在midmidmid右边 否则在midmidmid左边 满足最大流不变,且每条边满流 也就是压缩xxx次,就需要扩容xxx次,而且满足满流 那么对于边(u,v)(u,v)(u,v) u−>vu->vu−>原创 2020-11-01 14:09:58 · 258 阅读 · 0 评论 -
P2868 [USACO07DEC]Sightseeing Cows G(最优比率环)
luogu传送门 奶牛从任意点出发,经过一些路回到起点 价值是∑fi∑ti\frac{\sum f_i}{\sum t_i}∑ti∑fi 那么按照010101分数的基本套路来就是 f(r)=r∗∑ti−∑fif(r)=r*\sum t_i-\sum f_if(r)=r∗∑ti−∑fi 显然对于不同的环对应不同的直线 二分答案midmidmid,作直线x=midx=midx=mid相交上述直线若干点 若存在交点的yyy坐标小于零说明最大值还在midmidmid右边 否则还在左边,所以这题的关键就是去原创 2020-10-31 10:52:49 · 362 阅读 · 0 评论 -
P1768 天路(最优比率环)
天路 求一个环最大化∑vi∑ci\frac{\sum v_i}{\sum c_i}∑ci∑vi 按照010101分数规划的基本套路来… f(r)=∑vi−r∗∑cif(r)=\sum v_i-r*\sum c_if(r)=∑vi−r∗∑ci 对于不同的环对应不同的直线,但斜率始终小于000 所以二分一个midmidmid,作直线x=midx=midx=mid,交上述直线一些点 若存在点的yyy座标大于000说明最大值在右边 否则最大值在左边 于是把每条边的权值看作vi−r∗civ_i-r*c_iv原创 2020-10-30 22:07:35 · 310 阅读 · 0 评论 -
P4377 [USACO18OPEN]Talent Show G(01分数规划+01背包)
洛谷传送门 最大化∑ti∑wi\frac{\sum t_i}{\sum w_i}∑wi∑ti 令r=∑ti∑wir=\frac{\sum t_i}{\sum w_i}r=∑wi∑ti 构造函数f(r)=∑ti−r∗∑wif(r)=\sum t_i-r*\sum w_if(r)=∑ti−r∗∑wi 对于不同的选取奶牛方案,对应直线各不相同,但斜率都是负数 且每条直线与xxx轴的交点就是答案,现在就是找出最大的答案 若二分一个midmidmid作直线x=midx=midx=mid交于上述直线各个原创 2020-10-30 21:20:45 · 337 阅读 · 0 评论 -
POJ3155Hard Life(最大密度子图:最大权闭合图)
POJ传送门 题意 给定一个无向图,求一个子图,最大化EV\frac{E}{V}VE 其中EEE表示边数,VVV表示点数 考虑01分数规划 f(r)=E−V∗rf(r)=E-V*rf(r)=E−V∗r 对于不同的子图选择,对应的直线也不尽相同 但斜率始终为负数 所以二分rrr,作直线x=rx=rx=r交于若干个点 若存在某个交点yyy座标大于零,说明还在右边 所以需要求出最大值来判断 最大值怎么求,考虑网络流。 选择一个点获得−r-r−r的权值,选择一条边获得111的权值 但边的选择依赖于两个点的选择 所原创 2020-10-29 12:27:41 · 244 阅读 · 0 评论 -
POJ3621 最优比率环[模板]
POJ传送门 找一个环,最大化∑vali∑costi\frac{\sum val_i}{\sum cost_i}∑costi∑vali 其中valival_ivali为点权,costicost_icosti为边权 令r=∑vali∑costir=\frac{\sum val_i}{\sum cost_i}r=∑costi∑vali 有r∗∑costi−∑vali=0r*\sum cost_i-\sum val_i=0r∗∑costi−∑vali=0 设函数f(r)=r∗∑costi−∑v原创 2020-10-29 10:18:50 · 279 阅读 · 0 评论 -
POJ Desert King(01分数规划生成树)
POJ传送门 最佳比率生成树 最小化∑ai∑bi=r\frac{\sum a_i}{\sum b_i}=r∑bi∑ai=r 则∑ai−r∗∑bi=0\sum a_i-r*\sum b_i=0∑ai−r∗∑bi=0 显然对于不同的边集,∑ai\sum a_i∑ai和∑bi\sum b_i∑bi各不相同 设函数f(r)=A−B∗rf(r)=A-B*rf(r)=A−B∗r 不同的边集构成了不同的截距AAA和斜率−B-B−B 斜率为负,截距为正,设这些直线的集合是SSS 我们想求的是做靠左边的与xx原创 2020-10-23 13:25:02 · 313 阅读 · 0 评论 -
[模板]Poj2976 Dropping tests(01分数规划入门)
传送门 最大化∑ai∑bi=r\frac{\sum a_i}{\sum b_i}=r∑bi∑ai=r 那么∑ai−r∗∑bi=0\sum a_i-r*\sum b_i=0∑ai−r∗∑bi=0 那么对于所有不同的选取物品方式,∑ai\sum a_i∑ai和∑bi\sum b_i∑bi是各不相同的 令f(r)=B−Arf(r)=B-Arf(r)=B−Ar 画在坐标轴就是很多条直线,斜率负数,且交yyy轴正半轴 我们要求的就是最靠右的和xxx轴的交点,此时是最大值 怎么求? 考虑在x=midx=m原创 2020-10-23 10:52:38 · 254 阅读 · 0 评论