g 公司有 n個沿鐵路運輸線環形排列的倉庫,每個倉庫儲存的貨物數量不等。如何用最少搬運量可以使 n個倉庫的庫存數量相同。搬運貨物時,只能在相鄰的倉庫之間搬運。
輸入格式:
檔案的第 11 行中有 11 個正整數 n,表示有 n個倉庫。
第 22 行中有 n個正整數,表示 n個倉庫的庫存量。
輸出格式:
輸出最少搬運量。
因為已知了最終狀態,相當於已知每個點的搬運數量。
現在就是令搬運次數盡量少。
相當於每個點與相鄰點連inf的邊費用為1
大於平均值與匯點連流量為增量邊費用為0
源點與小於平均值連流量為增量邊費用為0
跑費用流就好了。
**:
1 #include2 #include3 #include4 #include5const
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 個倉庫的庫存量。輸出...