LuoguP4016 負載平衡問題 費用流

2022-05-09 14:03:09 字數 1319 閱讀 2587

g 公司有 n個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。

輸入格式:

檔案的第 11 行中有 11 個正整數 n,表示有 n個倉庫。

第 22 行中有 n個正整數,表示 n個倉庫的庫存量。

輸出格式:

輸出最少搬運量。

因為已知了最終狀態,相當於已知每個點的搬運數量。

現在就是令搬運次數盡量少。

相當於每個點與相鄰點連inf的邊費用為1

大於平均值與匯點連流量為增量邊費用為0

源點與小於平均值連流量為增量邊費用為0

跑費用流就好了。

**:

1 #include2 #include3 #include4 #include5

const

int oo=0x7f7f7f7f;6

struct

pntp[1001

];14

struct

ente[100000

];20

intcnt;

21int

n,m;

22int

s,t;

23int a[10000

];24 std::queueq;

25void ade(int f,int t,int mf,int

ct)26

35bool spfa(void)36

45 p[s].dis=0

;46 p[s].vis=true

;47 p[t].pre=-1;48

q.push(s);

49while(!q.empty())

5068}69

}70}71

return p[t].pre!=-1;72

}73int ek(void)74

84}85return

ret;86}

87int

main()

8897 s=n+1,t=n+2

;98 sum/=n;

99for(int i=1;i<=n;i++)

100else

109}

110for(int i=1;i)

111115 ade(1,n,oo,1);ade(n,1,0,-1

);116 ade(n,1,oo,1);ade(1,n,0,-1

);117 printf("

%d\n

",ek());

118return0;

119 }

LUOGU P4016 負載平衡問題

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

luogu P4016 負載平衡問題

本題有數學貪心解法和費用流解法 數學解法就看看luogu題解吧,窩太菜了 費用流就找建圖法,依舊是設超級源點和匯點,初始資料就源點s向該點連點,流量就是初始量,代價為0,然後每個倉庫向相鄰的點連邊,容量無限大,代價為1,再每個倉庫向匯點連點,容量就是sum n,代價為0,直接跑最大流最小費就行了,這...

P4016 負載平衡問題

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