題意:g 公司有n 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最 少搬運量可以使n 個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。 程式設計任務: 對於給定的n 個環形排列的倉庫的庫存量,程式設計計算使n 個倉庫的庫存數量相同的最少搬運量。
思路:貪心是很好想的,不過這道題用來練習網路流。。。
通過分析發現,求都減去平均數後,剩下的就是需要的或多出來的數量。把所有多出的倉庫與源點連邊,容量為多出的數量,費用0。把所有缺少的倉庫與匯點建邊,容量為缺少的數量,費用0。然後對每個點對兩邊的點建邊,容量inf,費用1,就是每運乙個貨物花費1,跑最小費用最大流。
#include#define ll long long
#define inf 0x3f3f3f3f
using namespace std;
const int n = 1e5 + 10;
int n, m, s, t, h[n], cnt, dis[n], inq[n], pre[n], last[n], flow[n];
struct node no[n];
void add(int u, int v, int w, int c) ;
h[u] = cnt++;
no[cnt] = node;
h[v] = cnt++;
}int spfa() }}
return dis[t] != inf;
}ll mcmf()
ans += 1ll * flow[t] * dis[t];
}return ans;
}int ap[n], sum;
int main()
printf("%lld\n", mcmf());
return 0;
}
LOJ6013 負載平衡 最小費用最大流
題目描述見鏈結 將倉庫分為兩個型別,第乙個型別為稀缺貨物的倉庫 a ia i ai 較平均值少 x ix i xi 第二個型別為富餘貨物的倉庫 b ib i bi 較平均值多 y iy i yi 然後建立超級源點s ss 和超級匯點ttt,include define reg register in...
費用流 負載平衡問題
g 公司有 n 個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n 個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。輸入輸出格式 輸入格式 檔案的第 1 行中有 1 個正整數 n 表示有 n 個倉庫。第 2 行中有 n 個正整數,表示 n 個倉庫的庫存量...
負載平衡問題 網路流24題 最大流最小費用
注意題意 環形 不然怎麼也算不明白為什麼樣例是那樣的 發現這道題竟然是一道費用流,是因為移動每乙個貨物可以看成是挪動一次代價為1,這樣子想就可以建邊了,從源點出發到每個節點是每個節點的擁有數,而每個節點到匯點的容量是那個平均數。然後對於每個相鄰的節點連線上邊並且單位流的代價是1。include in...