loj6013 網路流 24 題 負載平衡

2021-08-14 18:00:08 字數 1304 閱讀 8125

(

題目描述

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

輸入格式

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

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

輸出格式

輸出最少搬運量。

樣例 樣例輸入

5 17 9 14 16 4

樣例輸出

資料範圍與提示

1≤n≤100 1 \leq n \leq 100 1≤n≤100

我把乙個點 拆成兩個點 一邊是富裕的要給別人值的點 一遍是不富裕的要從別人得到的點

然後先求個平均值 然後針對每個地方的球都減一下這個平均值 然後如果富裕那麼就安放在左邊 如果不富裕 那就安放在右邊 然後如果這兩個點是臨近點 那麼我左邊和左邊的點相鄰代表轉移過去(只是經過而已)如果我左邊和右邊在原圖中相鄰的點連線 那麼代表我這些球是用來補充那個缺少的 這些邊的費用都是1 邊權都是真無窮 然後源點和左邊連線的邊權是s[i]費用為0 右邊和匯點連線的費用是0 邊權是s[i] 然後跑費用流即可 我好菜啊orz啥都不會慘啊orz

#include

#include

#include

#include

#define inf 0x3f3f3f3f

#define n 220

using

namespace

std;

inline

char gc()

return *s++;

}inline

int read()

return x;

}struct nodedata[n*n];

int h[n],pre[n],s[n],n,m,t,f[n],path[n],num=1;bool flag[n];

inline

void insert1(int x,int y,int z,int c)

inline

bool spfa()

}}if(pre[t]==-1) return

0;else

return1;}

int main()int ans=0;

while(spfa())now=t;

while(now)

}printf("%d",ans);

return

0;}

loj6004 網路流 24 題 圓桌聚餐

題目描述 假設有來自 n n n 個不同單位的代表參加一次國際會議。每個單位的代表數分別為 ri r i r i 會議餐廳共有 m m m 張餐桌,每張餐桌可容納 ci c i c i 個代表就餐。為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。試設計乙個演算法,給出滿足要求的代表...

LOJ 6004 網路流 24 題 圓桌聚餐

題意 假設有來自 m mm 個不同單位的代表參加一次國際會議。每個單位的代表數分別為 r ir i ri 會議餐廳共有 n nn 張餐桌,每張餐桌可容納 c ic i ci 個代表就餐。為了使代表們充分交流,希望從同乙個單位來的代表不在同乙個餐桌就餐。試設計乙個演算法,給出滿足要求的代表就餐方案。連...

loj 6002 網路流 24 題 最小路徑覆蓋

題目描述 問題描述 每條邊的容量均為1。求網路g1的 0 x 0 y 最大流。程式設計任務 對於給定的給定有向無環圖g,程式設計找出g的乙個最小路徑覆蓋。輸入輸出格式 輸入格式 件第1 行有2個正整數n和m。n是給定有向無環圖g 的頂點數,m是g 的邊數。接下來的m行,每行有2 個正整數i和j,表示...