P4016 負載平衡問題 網路流重溫

2022-05-03 13:09:16 字數 1244 閱讀 9400

這個題目現在第二次做,感覺沒有這麼簡單,可能是我太久沒有寫這種題目了,基本上都忘記了,所以我連這個是費用流都沒有看出來。

有點小傷心,知道是費用流之後,我居然還拆點了。

這個寫完之後確實感覺沒有那麼難,但是寫的過程還是很艱辛的,這個為什麼是乙個費用流呢,

因為我們知道每移動乙個單位的貨物,就會產生一單位的費用,所以這個就是費用流。

再而為什麼這個不要拆點呢,因為每乙個點都是只有一種屬性,要麼就是多了要輸出,要麼就是少了要進入,這個其實我也有點不是很清楚。

還沒有完全弄明白。

#include #include 

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

using

namespace

std;

const

int maxn = 3e5 + 10

;typedef

long

long

ll;struct

edge

};vector

e;vector

g[maxn];

inta[maxn], p[maxn], inq[maxn], d[maxn], n, m;

void init(int

n)void addedge(int u,int v,int c,int

cost)

bool spfa(int s,int t,int &flow,ll &cost)}}

if (d[t] == inf) return

false

; flow +=a[t];

cost += d[t] * 1ll *a[t];

for(int u=t;u!=s;u=e[p[u]].u)

return

true;}

int mincostmaxflow(int s,int t,ll &cost)

intmain()

else

if(i==n)

else

}ll ans = 0

; mincostmaxflow(s, t, ans);

printf(

"%lld\n

", ans);

return0;

}

view code

P4016 負載平衡問題 網路流

gg 公司有 nn 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 nn個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。輸入格式 檔案的第 11 行中有 11 個正整數 nn,表示有 nn 個倉庫。第 22 行中有 nn 個正整數,表示 nn 個倉庫的庫...

P4016 負載平衡問題

方法二 p4016 負載平衡問題 g 公司有 n 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n 個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。輸入格式 第一行乙個正整數 n,表示有 n 個倉庫。第二行 n 個正整數,表示 n 個倉庫的庫存量。輸出...

P4016 負載平衡問題 費用流

有 n le 100 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n 個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。費用流模型,每個倉庫建乙個點,各個倉庫之間相互連邊,費用為 1,倉庫與源連邊,流量按照題意設定,倉庫與匯點連邊,流量是最終的平均流量...