01分数规划,简单的来说,就是有一些二元组(si,pi),从中选取一些二元组,使得∑si / ∑pi最大(最小)。 这种题一类通用的解法就是,我们假设x = ∑si / ∑pi的最大(小)值,那么就有x * ∑pi = ∑si ,即∑si - x * ∑pi= 0。也就是说,当某一个值x满足上述式子 ...
分类:
其他好文 时间:
2018-11-08 16:20:24
阅读次数:
167
嘟嘟嘟 01分数规划+树形背包。 然后就没了。 结果我调了半天,原因还是树形背包不熟练。 我是用dfs序求的,转化的时候,是dp[i][j]转化到dp[i + 1][j + 1]或dp[i +siz[pos[i]]][j],而不是像普通的dp从别的状态转化到dp[i][j],所以最后的答案应该考虑到 ...
分类:
Web程序 时间:
2018-11-04 19:34:11
阅读次数:
223
好像是 01 分数规划 板子 列出式子 (F - ∑Ci) / (∑Ti) 设当前二分的答案为 ans 若 ans ≤ (F - ∑Ci) / (∑Ti)则说明 ans 可以再增大 那我们二分边界调整的条件就有了 就是当 F - (∑ans*Ti + ∑Ci) ≥ 0 代码: ...
分类:
其他好文 时间:
2018-10-27 10:28:40
阅读次数:
184
浅谈01分数规划 ======== 所谓01分数规划,看到这个名字,可能会想到01背包,其实长得差不多。 这个算法就是要求“性价比”最高的解。sum(v)/sum(w)最高的解。 定义 == 我们给定两个数组,a[i]表示选取i的收益,b[i]表示选取i的代价。如果选取i,定义x[i]=1否则x[i ...
分类:
编程语言 时间:
2018-10-20 23:43:14
阅读次数:
197
题面 0/1分数规划+树形背包检查 要求$\frac{\sum P_i}{\sum S_i}的最大值,$按照0/1分数规划的做法,二分一个mid之后把式子化成$\sum P_i=\sum S_i*mid$。然后相当于每个点$i$的点权是$P_i-S_i*mid$来做树形背包。 然而我并不太会树形背包 ...
分类:
Web程序 时间:
2018-10-18 10:49:41
阅读次数:
155
数组开小导致TTTTTLE…… 是分数规划,设sm为所有格子价值和,二分出mid之后,用最小割来判断,也就是判断sm dinic() =0 这个最小割比较像最大权闭合子图,建图是s像所有点连流量为格子价值的边(相当于最大权闭合子图中的正权点),然后考虑边缘,两个相邻的格子,如果一个选一个不选那么中间 ...
分类:
其他好文 时间:
2018-10-16 10:15:00
阅读次数:
193
01分数规划,二分答案然后把判别式变成Σp[i] Σs[i] mid =0,然后树上背包判断,设f[i][j]为在i点子树里选j个的最大收益,随便背包一下就好 最丧病的是神卡常……转移的时候要另开一个一维g来转移,然后限制 include include using namespace std; c ...
分类:
Web程序 时间:
2018-10-15 11:56:47
阅读次数:
160
题目求一种方案,使得图全连通并且所有边费用与距离之商最小 $\sum_{i∈e}cost_i$除以$\sum_{i∈e}dis_i$最小 可以考虑二分求解 可以假设这个值小于等于L时 存在 一个解,然后检查是否存在这个解,如果不存在说明L取小了 问题是为什么要假设“存在”,事实上如果假设“任意”,那 ...
分类:
其他好文 时间:
2018-10-14 16:54:56
阅读次数:
140
首先floyd求出来每两点间的最短距离,然后再求出来从某点买再到某点卖的最大收益 问题就变成了找到一个和的比值最大的环 所以做分数规划,二分出来那个答案r,把边权变成w[i]-r*l[i],再做spfa判正环就行了 (本来想偷懒用floyd判正环,结果T了) ...
分类:
其他好文 时间:
2018-10-13 10:55:47
阅读次数:
151
1183 泥泞的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 1183 泥泞的道路 1183 泥泞的道路 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 钻石 Diamond 时间限制: 1 s 时间限制: 1 s 空间限制: 128 ...
分类:
其他好文 时间:
2018-10-06 21:32:39
阅读次数:
126