看到題後第一反應應該是把容量作為限制車站個數的條件。那麼就以火車為單位建圖了。
拆點,x->xi,xj,建立源點、匯點,源點向每個點xi連邊,xj向匯點連邊,xi向xj連邊,表示火車進站,所以費用設為-cost,接下來對火車之間的關係進行計算,如果兩輛火車可以進入同乙個車站,就從xj向yi連邊。為了限制車站個數,建立超級源和超級匯,分別和源點與匯點相連,容量作為車站數量。最後跑最小費用最大流取相反數輸出。
總時間耗費: 33ms
總記憶體耗費: 744b
#include#include#include#include#includeusing namespace std;
const int maxn = 200 + 10;
const int maxm = 100 + 10;
const int inf = 1e9 + 7;
struct edge ;
int n, s, t;
vectorg[maxn];
vectoredges;
void addedge(int from, int to, int cap, int cost) );
edges.push_back((edge));
int m = edges.size();
g[from].push_back(m-2);
g[to].push_back(m-1);
}int d[maxn], p[maxn], a[maxn];
bool inq[maxn];
bool bellmanford(int& cost)
}} }
if(d[t] == inf) return 0;
cost += d[t]*a[t];
int x = t;
while(x != s)
return 1;
}int mincostmaxflow()
int reach[maxm], stay[maxm];
int main()
for(int i = 1; i <= m; i++)
for(int j = 1; j <= m; j++) if(reach[i] + stay[i] < reach[j])
addedge(i+m, j, 1, 0);
printf("%.2lf\n", -0.01*mincostmaxflow());
return 0;
}
10 3 範圍驗證
rangevalidator控制項能夠驗證使用者輸入的值在乙個指定的範圍之內。如果使用者輸入的值不在該範圍之內,則顯示提示資訊。rangevalidator控制項提供了5種範圍,由type屬性指定。該屬性的值的具體描述如下 string,字串範圍 integer,整數範圍 double,實數範圍 d...
10 3其他數學專題
10.3.1遞推 漢諾塔問題。分析 當n稍微大一點時,手工移動就開始變得困難起來,下面直接給出遞迴解法 首先,把前n 1個圓盤放到c軸 接下來把n號圓盤放到c軸 接下來把n號圓盤放到b軸 最後,再把前n 1個盤子放到b軸。斐波那契數列。走樓梯問題 f n f n 1 f n 2 養兔子問題 f n ...
103 子串查詢
記憶體限制 256 mib時間限制 500 ms標準輸入輸出 題目型別 傳統評測方式 文字比較 上傳者 匿名 提交提交記錄 統計討論 測試資料 題目描述 這是一道模板題。給定乙個字串 a aa 和乙個字串 b bb,求 b bb 在 a aa 中的出現次數。a aa 中不同位置出現的 b bb 可重...