洛谷P2153 SDOI2009 晨跑

2021-08-18 11:30:33 字數 1894 閱讀 3873

elaxia最近迷戀上了空手道,他為自己設定了一套健身計畫,比如俯臥撐、仰臥起坐等 等,不過到目前為止,他堅持下來的只有晨跑。 現在給出一張學校附近的地圖,這張地圖中包含n個十字路口和m條街道,elaxia只能從 乙個十字路口跑向另外乙個十字路口,街道之間只在十字路口處相交。elaxia每天從寢室出發 跑到學校,保證寢室編號為1,學校編號為n。 elaxia的晨跑計畫是按週期(包含若干天)進行的,由於他不喜歡走重複的路線,所以 在乙個週期內,每天的晨跑路線都不會相交(在十字路口處),寢室和學校不算十字路 口。elaxia耐力不太好,他希望在乙個週期內跑的路程盡量短,但是又希望訓練週期包含的天 數盡量長。 除了練空手道,elaxia其他時間都花在了學習和找mm上面,所有他想請你幫忙為他設計 一套滿足他要求的晨跑計畫。

存在1\rightarrow n1→

n 的邊存在。這種情況下,這條邊只能走一次。

輸入格式:

第一行:兩個數n,m。表示十字路口數和街道數。 接下來m行,每行3個數a,b,c,表示路口a和路口b之間有條長度為c的街道(單向)。

輸出格式:

兩個數,第乙個數為最長週期的天數,第二個數為滿足最長天數的條件下最短的路程長 度。

輸入樣例#1:

7 10

1 2 1

1 3 1

2 4 1

3 4 1

4 5 1

4 6 1

2 5 5

3 6 6

5 7 1

6 7 1

輸出樣例#1:

2 11

對於30%的資料,n ≤ 20,m ≤ 120。

對於100%的資料,n ≤ 200,m ≤ 20000。

最小費用最大流板子。。。

每個點只能走一次,可以想到拆點:

對於除了 1 和 n 的點,拆點的連邊流量為1,費用為0 。

其他的邊的流量定為1,費用為路徑長度。

跑出最大流即為最大天數,最小費用和為最短路徑。

特判起點為 1 的與 終點為 n 的有向邊,最大流即為 1 。

附**:

#include#include#include#include#define maxn 410

#define max 999999999

using namespace std;

int n,m,s,t,c=2,maxflow=0,mincost=0;

int head[maxn],path[maxn],deep[maxn],fa[maxn],flow[maxn];

bool vis[maxn];

struct nodea[maxn*maxn];

inline int read()

while(c>='0'&&c<='9')

return date*w;

}inline int relax(int u,int v,int i,int w,int cost)

return 0;

}inline void add(int u,int v,int w,int cost)

bool spfa()

path[s]=0;

vis[s]=true;

fa[s]=0;

flow[s]=max;

q.push(s);

while(!q.empty())

} }if(path[t]==max)return false;

return true;

}void ek()

maxflow+=flow[t];

mincost+=flow[t]*path[t]; }}

int main()

ek();

printf("%d %d\n",maxflow,mincost);

return 0;

}

洛谷 P2153 SDOI2009 晨跑

給出一幅有向無環圖,問從點1到點n有幾條互相沒有交點 除起點終點外不能有公共點 的路徑,保證路徑數量最多的情況下,路徑最大數量與最短的路徑長度之和是多少.與費用流裸題不同的是,不能有公共點,解決方法是將每乙個點拆為乙個入點和乙個出點,流量為1 起點終點不用拆或者流量為inf 建邊時,從乙個點的出點連...

(費用流)洛谷P2153 SDOI2009 晨跑

要求路程盡可能短,天數盡可能長,那麼肯定是最小費用最大流了。天數作為流量,路程作為費用。按照要求,每個路口只能走一次,這個就是不重複選取的問題,在最大流中的最長不下降子串行問題有涉及到,解決的辦法就是將點拆開,設入點為i ii,出點為i i i 然後在之間建一條流量為1 11的邊。這裡也是相同的,只...

洛谷P1972 SDOI2009 HH的項鍊

這道題想了很久,發題解是為了理解的更深刻一點。管理放我過好嘛qwq 步入正題 這道題應該是很多做法,我選擇的是離線 樹狀陣列。首先輸入陣列。用fisrt陣列先記錄元素最開始出現的位置,對應的每乙個樹狀陣列的位置add一下 樹狀陣列洛谷也有模板題的了解一下就ok啦 rep i,1 n 然後倒著更新一遍...