『学习笔记』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\) 即判环)才能过。

dfs 版 77msbfs 版 231ms

双倍经验 UVA11090 + 三倍经验 SP2885

SP2885 WORDRING - Word Rings

两个字符串若首尾两位匹配,则两个字符串相连。若若干个字符串连成一个环,即为环串。给定 \(n\) 个字符串,求最长的 环串的平均长度。

将字符串前两位和后两位看作 \(26\) 进制变为一个点,最长路判正环。注意特判长度不足 \(2\) 的字符串、精度问题以及无解输出是否正确。记录详情

posted @ 2025-01-05 22:01  仙山有茗  阅读(9)  评论(0)    收藏  举报