『学习笔记』01 分数规划
\(n\) 个物品,每个物品有两个权值 \(a_i,b_i\),令 \(w_i\) 表示选或不选,最大化或最小化 \(\dfrac{\sum w_i \times a_i}{\sum w_i \times b_i}\)。
二分一个 \(t\) 使得 \(\dfrac{\sum w_i \times a_i}{\sum w_i \times b_i}\ge t\),移项得 \(\sum w_i \times(a_i-t \times b_i) \ge 0\)。
P3199 [HNOI2009] 最小圈
求图上一个环上的权值除以点数的最小值。
比例,可以联想到 01 分数规划。设边权为 \(v_i\),二分最小值 \(t\),则可得:
\[\dfrac{\sum w_i \times v_i}{\sum w_i \times 1} \le t
\]
其中 \(w_i\) 由是否在同一个环上决定。移项得:
\[\sum w_i \times(v_i-t) \le 0
\]
于是可以设新的边权为 \(v_i-t\),然后判负环。
关于判负环,dfs 版的 spfa 好写而且比较快。bfs 也不是不行,但是需要一个玄学剪枝(松弛次数 \(\ge 25\) 即判环)才能过。
SP2885 WORDRING - Word Rings
两个字符串若首尾两位匹配,则两个字符串相连。若若干个字符串连成一个环,即为环串。给定 \(n\) 个字符串,求最长的 环串的平均长度。
将字符串前两位和后两位看作 \(26\) 进制变为一个点,最长路判正环。注意特判长度不足 \(2\) 的字符串、精度问题以及无解输出是否正确。记录详情。

浙公网安备 33010602011771号