思路:
這題的結論得要看amber的**,結論就是將求f(x)/b(x)最小轉化為求min(f(x)-b(x)*λ),其中x為s集的解空間,f(x)為解的邊權和,b(x)為解的邊數,
λ=f(x)/b(x)。λ*為最優解,當且僅當(x屬於s)∑min(f(x)-b(x)*λ)==0;故可以將原邊權的權值改為w-λ;對λ進行二分列舉,找出答案。
#include#include#include
#include
#include
#define n 510
#define m 50010
#define inf 1e9
using
namespace
std;
const
double eps=1e-9
;struct
edgeedge[m];
intindex[n],d[n],gap[n],e,vi[n];
void addedge(int
from,int to,double
val)
intsource,des,n,m;
void dfs(int
u)double dfs(int pos,double
flow)
if(d[v]//
找出與pos相連的點的最小標號
} }
if(lv==flow)//
沒有找到增廣路勁,進行標號更新
return flow-lv;
}double sap(int st,int
de)
return
ans;
}void
init()
intmain()
double
l,r;
l=lmin,r=rmax;
double res=0
;
while(r-l>eps)
res+=sap(1
,n);
if(res>0
) l=mid;
else
r=mid;
}init();
for(i=0;i)
sap(
1,n);
//coutcout); vector
ans;
for(i=0;i)
}int temp=ans.size();
printf(
"%d\n
",temp);
printf("%d
",ans[0
]);
for(i=1;i)
printf("%d
",ans[i]);
printf("\n
");}
return0;
}
(二分 網路流)Optimal Milking
題意為n個奶牛站,m頭奶牛,每個奶牛站的奶牛上限k 給出奶牛站和奶牛對其他實體的距離,距離為0即為兩個實體無路徑,求出所有奶牛到奶牛站中走的最遠的奶牛的最遠距離的最小值 最大中的最小問題,可以二分。我們先用floyd處理出實體到實體之間的最近距離,二分這個最遠距離,建圖 兩實體距離小於等於二分值時才...
2021 網路流初步
首先是一些概念,容量,流量,飽和弧,非飽和弧,零弧,非零弧,增廣路,殘量,殘量網路 這個方法的時間複雜度比較差 為 一直bfs找增廣路,直到找不到演算法結束,每次找到後,修改正向邊和反向邊的邊權即可 includeusing namespace std int n,m,s,t const int i...
HCIA01 網路基礎
硬體方面 通過介質將網路裝置和終端連線起來。軟體方面 作業系統,應用軟體,應用程式互相通訊。目的 實現資源共享,資訊傳遞。計算機網路的定義 一組自治計算機互聯的集合。裝置 device 介質 media 訊息 報文 message data 協議 protocol 傳送方 資訊源 sender so...