修車加強版。發現每個廚師拆成p個點太浪費了,畢竟總共用到的才p個點。於是從下往上乙個乙個加,加到滿流就停。
論動態加點費用流的正確姿勢......
我自己加總是出現負環...我是每次加一整層,然後跑完這一層再加下一層,這樣會顯而易見的出現負環......
然後我們發現如果每增廣一流量就加邊就不會出現這種毒瘤現象,因為每次加的一定比增廣的劣......
注意一定要動態開點,不能只用乙個點代表廚師。否則可能出現廚師的第一次給了多個菜的情況...
1 #include 2ac**3const
int n = 100010, inf = 0x7f7f7f7f;4
5struct
edge
13 }edge[5000010]; int tp = 1;14
15int
e[n], lm, now[n], pre[n], flow[n], p[n], cnt[n], d[n];
16int val[110][110
];17
bool
vis[n];
18 std::queueq;
1920 inline void add(int x, int y, int z, int
w) 27
28 inline bool spfa(int s, int
t) 49}50
}51}52
return d[t]
5455 inline void update(int s, int
t) 63
return;64
}6566int
main()
78for(int i = 1; i <= n; i++) 82}
83///
sol84
for(int i = 1; i <= m; i++) 91}
9293
int ans = 0;94
while
(tot)
108break
;109
}110
}111
112 printf("
%d\n
", ans);
113return0;
114 }
洛谷P2050 NOI2012 美食節
題目 輸入格式 輸入檔案的第1行包含兩個正整數n和m,表示菜品的種數和廚師的數量。第2行包含n個正整數,其中第i個數為pi,表示點第i種菜品的人數。接下來有n行,每行包含m個非負整數,這n行中的第i行的第j個數為ti,j,表示第j個廚師製作第i種菜品所需的時間。輸入檔案中每行相鄰的兩個數之間均由乙個...
洛谷 P6772 美食家
noi 簽到題我都不會哦 題意見洛谷。以下用 k 表示 k 以避免與迭代變數衝突 首先有個很顯然的 dp dp 表示第 i 天小 w 在城市 j 的情況下獲得的最大愉悅值之和。邊界 dp beginc 1 i 1 infty i neq1 end 目標 dp 狀態轉移方程 dp max c j ex...
洛谷P5049 洛谷P5022 題解 旅行
原題 資料加強版 加強版 參考你谷題解 終於調過了 又是一如既往的申必錯誤 noi plus石錘了 原題的資料允許我們 o n 2 暴力斷邊,但是加強版的資料達到了 n log n 級別,我們必須在斷邊這一環節尋求更好的解法。考慮我們進入環後在何處回溯 根據繼續走環走到的點分類 設當前已經從 b 走...