bzoj 工作安排(最小費用最大流)

2021-08-01 12:03:55 字數 924 閱讀 3034

裸的最小費用最大流

思路是弄乙個原點,弄乙個會點,將原點連上物品容量為c[i],

費用為零,將物品和人按a陣列的關係連起來,容量為inf,花費為零,然後將人和會點連起來容量為他

做幾件物品,也就是ss[j]-ss[j-1],花費為他做這幾件的憤怒值,再跑最大流最小費用演算法就行了;

複製**

using namespace std;

const int m=199999;

const int inf=2139062143;

int n,m,s,t;int dis[m],c[m],a[999][999],ss[m];

int nex[m],head[m],cos[m],to[m],tot,pre[m],cap[m],vis[m],flo[m],id[m];

int add(int x,int y,int z,int w)

int spfa(int s,int t)

} }

} if(dis[t]>=inf)return 0;

return 1;

} struct st;

st maxflow(int s,int t)

a.cost+=flo[t]*dis[t];

} return a;

} int main()// 將原點連上物品容量為c[i],費用為零

for(int i=1;i<=m;i++)

for(int j=1;j<=n;j++)

} for(int i=1;i<=m;i++)

ss[s+1]=inf;

for(int j=1;j<=s+1;j++)

} st d=maxflow(0,n+m+1);

printf(「%lld」,d.cost);

return 0;

}

bzoj1834 最大流 最小費用最大流

就當模板啦 不過這題第二問的構圖還是可以想一下的。在殘量網路中把原來的邊全部加一遍,但是有費用w,容量無限大,一開始的邊還是費用為0 新建乙個源點s,s向1連一條邊,容量為k,費用為0,保證這條邊滿流,就有最小費用了。program bzoj1834 type point record s,t,ca...

最小費用最大流

網 絡流的基本問題為 設乙個有向賦權圖g v,e v 其中有兩個特殊的節點s和s s稱為發點,s 稱為收點。圖中各 邊的方向和權數表示允許的流向和最大可能的流量 容量 問在這個網路圖中從發點流出到收點匯集,最大可通過的實際流量為多少?流向的分布情況為怎樣?設有乙個網路圖g v,e v e中的每條邊 ...

最小費用最大流

const int maxn 250 const int maxm 62272 const int inf 0x4ffffff int n,m struct edge edge maxm int head maxn cnt void init void addedge int u,int v,int...