洛谷P2472 SCOI2007 蜥蜴 題解

2021-09-20 21:40:40 字數 1103 閱讀 7871

這道題用最大流解決。

首先構建模型。

一根柱子可以跳入和跳出,於是拆成兩個點:入點和出點。

每一根柱子的入點和出點連一條流量為高度的邊,來限制蜥蜴跳入的次數。

當柱子a可以調到柱子b時,就從a的出點向b的入點連邊,流量inf。

s向所有有蜥蜴的柱子的入點連邊,流量為1

t表示地圖外一點,當一根柱子能跳到地圖外時,則出點向t連流量為inf的邊。

然後跑最大流即可。

這裡要注意陣列的範圍以及拆點。

#include

#include

#include

#include

#include

#define inf 0x7fffffff

using

namespace std;

int s,t,ans;

int d[

1005];

struct edge};

vectore[

1005];

void

add(

int x,

int y,

int w)

bool

bfs()}

}if(d[t]==-

1)return0;

else

return1;

}int

dfs(

int x,

int low)}if

(low!=0)

d[x]=-

1;return totflow;

}void

dinic()

}int

main()

}}for(

int i=

1;i<=n;i++)}

}for

(int i=

1;i<=n;i++)}

}for

(int x1=

1;x1<=n;x1++)}

}}}dinic()

;printf

("%d"

,cnt-ans)

;return0;

}

洛谷P2472 SCOI2007 蜥蜴 題解

這道題用最大流解決。首先構建模型。一根柱子可以跳入和跳出,於是拆成兩個點 入點和出點。每一根柱子的入點和出點連一條流量為高度的邊,來限制蜥蜴跳入的次數。當柱子a可以調到柱子b時,就從a的出點向b的入點連邊,流量inf。s向所有有蜥蜴的柱子的入點連邊,流量為1 t表示地圖外一點,當一根柱子能跳到地圖外...

題解 P2472 SCOI2007 蜥蜴

題目背景 07四川省選 題目描述 在乙個r行c列的網格地圖中有一些高度不同的石柱,一些石柱上站著一些蜥蜴,你的任務是讓盡量多的蜥蜴逃到邊界外。每行每列中相鄰石柱的距離為1,蜥蜴的跳躍距離是d,即蜥蜴可以跳到平面距離不超過d的任何乙個石柱上。石柱都不穩定,每次當蜥蜴跳躍時,所離開的石柱高度減1 如果仍...

P2472 SCOI2007 蜥蜴 網路流

n m n mn m個格仔,每個格仔的石柱高度不同,蜥蜴可以跳到距離不超過d dd的石柱處,並且先前所站的石柱高度減一,為0則不能站,然後求有多少只蜥蜴不可以逃脫。考慮網路流,每只蜥蜴表示乙個流,將每個石柱分成入點和出點,然 點連出點流量為石柱高度,然後每個可以走的點之間出點連入點無限,之後有蜥蜴的...