[HNOI2009]最小圈 分数规划 spfa判负环 题面 思路难,代码简单. 题目求圈上最小平均值,问题可看为一个0/1规划问题,每个边有\(a[i],b[i]\)两个属性,\(a[i]=w(u,v),b[i]=1\),问题转化为\(min(\frac{\sum^{k}_{i=1}a[i]}{\sum^{k}_{j=1}b[j]})\) 分数规划考虑二分答案,当前\(mid\)可能为答案当且仅当: \[ \frac{\sum^{k}_{i=1}a[i]}{\sum^{k}_{j=1}b[j]}…
题目描述 样例输入 4 5 1 2 5 2 3 5 3 1 5 2 4 3 4 1 3 样例输出 3.66666667 题解 分数规划+Spfa判负环 二分答案mid,并将所有边权减去mid,然后再判负环,若有负环则调整下界,否则调整上界,直至上下界基本重合. 证明:显然 由于有(c+d)/(a+b+k)>(c+d)/(a+b)≥min(c/a,d/b),所以两个相交环形成的新环一定不是最优解,即答案一定是简单环. 如果存在环使得边权和/点数<mid,那么就有边权和<点数*mid. 又因…
传送门 可以发现它的式子是一个分数规划的式子,所以可以二分答案,将所有边权减掉当前二分值之后跑一边$SPFA$判断负环即可. 然而这道题把$BFS-SPFA$卡掉了却没卡$DFS-SPFA$ 出题人:想不到吧 然而这道题目其实是有结论的,具体可以去看rqy聚聚的blog,反正我是看不懂 // luogu-judger-enable-o2 #include<bits/stdc++.h> #define ld long double #define eps 1e-10 //This code is…
题目 传送门 题解 这个题是一个经典的分数规划问题. 把题目形式化地表示,就是 \[Minimize\ \lambda = \frac{\sum W_{i, i+1}}{k}\] 整理一下,就是 \[\lambda * k = \sum W_{i, i+1}\] 定义新的函数 \[g(\lambda) = Min(\lambda * k - \sum W_{i, i+1})\] 显然这个函数单调,我们二分\(\lambda\),等价于求一个负环. 如果用spfa求负环会Tle,所以学习了用dfs…
[BZOJ1486][HNOI2009]最小圈 Description Input Output Sample Input 4 5 1 2 5 2 3 5 3 1 5 2 4 3 4 1 3 Sample Output 3.66666667 题解:题意给的实在不能太明显了,直接上分数规划.二分答案mid,将边权改为(原边权-mid),然后spfa判断是否有负环,若有则调整上界,否则调整下界. 然而码完一发交上去TLE,看了题解发现这题居然要用DFS版的SPFA!有谁能一上来就想到用DFS的我也是…
链接: #include <stdio.h> int main() { puts("转载请注明出处[辗转山河弋流歌 by 空灰冰魂]谢谢"); puts("网址:blog.csdn.net/vmurder/article/details/46348771"); } 题解: 分数规划Qwq. 然而它卡判点入n次的那种spfa推断负环. 于是有了一种黑科技: 我们从枚举点 i 開始 dfs .然后扫到点 j 时.保持 i~j 这一条链上的点被标记,然后强行推…
BZOJ_1486_[HNOI2009]最小圈_01分数规划 Description Input Output Sample Input 4 5 1 2 5 2 3 5 3 1 5 2 4 3 4 1 3 Sample Output 3.66666667   二分答案,边权减去答案,判负环即可. 然而spfa判负环会T掉,于是我使用了dfs判负环的方法. dfs判负环代码: void dfs(int x) { vis[x]=1; int i; for(i=head[x];i&&!ok;i=…
BZOJ1486 HNOI2009 最小圈 Description 应该算是01分数规划的裸板题了吧..但是第一次写还是遇到了一些困难,vis数组不清零之类的 假设一个答案成立,那么一定可以找到一个环使得其边权和大于等于边数∗ans. 可以发现答案是具有二分性的,二分出一个临时答案ans′,并且用ans′对每条边进行约束,再用深搜SPFA判断一下负环,如果有负环说明当前解可行,继续二分就好了. 注意题目要求保留到小数点后八位,多开一点二分次数防止精度不够啊 /******************…
01分数规划:通常的问法是:在一张有 \(n\) 个点,\(m\) 条边的有向图中,每一条边均有其价值 \(v\) 与其代价 \(w\):求在图中的一个环使得这个环上所有的路径的权值和与代价和的比率最小\大.即求 \(\frac{\sum v}{\sum w}\) 的最小值\最大值. 通常的解法也是比较固定的,我们首先假设求最大值,最优的答案为 \(L\),\(L = \frac{\sum v}{\sum w}\).接下来我们对于这个式子进行变形: \(L * \sum w = \sum v\)…
题面 Bzoj 洛谷 题解(0/1分数规划+spfa) 考虑\(0/1\)分数规划,设当前枚举到的答案为\(ans\) 则我们要使(其中\(\forall b_i=1\)) \[ \frac{\sum_{i=1}^ta[e_i]}{\sum_{i=1}^tb[v_i]}< ans \\ \therefore\sum a[e_i]-ans*b[v_i]=\sum a[e_i]-ans<0 \] 则问题就变成了判断图内是否存在一个负环... 时间复杂度:\(O(nmlog)\) #include…