看圖說故事(雖然我的塗有點醜)
這是第一筆範例測資中Q[i][j]的內容,表示server i要傳到city j的流量是Q[i][j],例如:server 0要傳到city 0的流量是30、server 0要傳到city 1的流量是23...
然後我們把這張圖的server欄位,根據題目給的k個方案,直接改成其對應的城市
直接魔改成另一張圖ans,如下,k=0是第一個方案的ans,k=1是第二個方案的ans。
(from_city是題目給的方案,我把它存在程式碼的serv_loc陣列中,表示伺服器位置)
對應程式碼如下:
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
ans[serv_loc[i]][j] += q[i][j];
}
}
最後就是按照題目給的條件計算花費cost,然後找出最小花費(mn_cost = min(cost, mn_cost);)
困難點和要注意的地方:
1.理解題目
2.每次用完serv_loc或用完ans,都要重新歸零,才不會把答案累加
剩下的請自行閱讀程式碼,不懂可以問我或chatGPT(^~^)
程式碼: https://github.com/gpsftuEbsl/zerojudge-cpp-program-answers/blob/main/f606.cpp