codevs 1035 火車停留

2021-06-28 13:48:28 字數 1234 閱讀 9327

看到題後第一反應應該是把容量作為限制車站個數的條件。那麼就以火車為單位建圖了。

拆點,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 可重...