這一題是很明確的最大流問題;但是無論是用dfs 還是 bfs 都肯定會超時。 因為規模太大了。
如果想練手網路流可以試試提交乙個殘量網路的**,應該只能得50分左右。
dfs,bfs 有缺陷得地方在於沒有認識到這一題圖得結構是非常規整得。這一題得方案還是使用動態規劃來做。
將最大流問題轉換為最小割問題;接下來只是嘗試怎麼將圖分為兩部分了。
如圖得紅線就構成了乙個分割。
我們得目的只是找出最小得分割即可。
而找最小得分割當然可以從右往左或者從左往右迭代了~
上**:
// 20170305-markdown-動態規劃.cpp: 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include#include#includeusing namespace std;
int main()
cols[i] = node;
} for (int i = 0; i < n - 2; ++i)
rows[i] = node;
} long long *pre = new long long[n];
long long *pre_min = new long long[n];
long long *pre_min2 = new long long[n];
long long *the = new long long[n];
long long min;
long long sum;
for (int i = 0; i < n-1; ++i)
for (int i = m; i > 1; --i)
sum = 0;
for (int k = j+1; k < n - 1; ++k)
the[j] = min+ cols[j][i - 2];
} pre_min[0] = the[0];
pre_min2[n - 2] = the[n - 2];
for (int j = 1; j < n - 1; ++j)
for (int j = n-3; j >=0; --j)
memcpy(pre, the, sizeof(long long)*n);
} long long maxflow = the[0];
for (int i = 0; i < n - 1; ++i)
end = clock();
cout << double(end - start) / clocks_per_sec<
cout << maxflow;
system("pause");
return 0;
}
CCF 2023年12月第5題 商路
這一題題目很長,但理解起來並不困難。有一點很重要,那就是題目輸入的順序是城市編號的順序,而城市編號的順序又直接決定了城市之間的上下級關係。雖然編號小的不一定是大編號的下級,但下級城市的編號一定比上級城市的編號小,如何利用這一點非常重要。假如城市a的下級城市是b,c,d 那如果b,c,d 本身的商路價...
CCF2023年12月第3題 Crontab
這一題要求我們對給定的配置資訊,在特定的時間段輸出需要執行的任務。在unix中每分鐘檢查一次,最簡單的思路就是用迴圈模擬時間的推移,每分鐘匹配一次規則。這種情況在真正的系統裡是很高效的,因為時間是真實流動的。但如果是模擬執行則有些浪費時間。如果在考試過程中想不到其它方法這種暴力方法至少可以通過70 ...
CCF認證2023年12月第3題 最大的矩形
試題編號 201312 3 試題名稱 最大的矩形 時間限制 1.0s 記憶體限制 256.0mb 問題描述 問題描述 在橫軸上放了n個相鄰的矩形,每個矩形的寬度是1,而第i 1 i n 個矩形的高度是hi。這n個矩形構成了乙個直方圖。例如,下圖中六個矩形的高度就分別是3,1,6,5,2,3。請找出能...