n∗m
n*mn∗
m個格仔,每個格仔的石柱高度不同,蜥蜴可以跳到距離不超過d
dd的石柱處,並且先前所站的石柱高度減一,為0則不能站,然後求有多少只蜥蜴不可以逃脫。
考慮網路流,每只蜥蜴表示乙個流,將每個石柱分成入點和出點,然**點連出點流量為石柱高度,然後每個可以走的點之間出點連入點無限,之後有蜥蜴的柱子原點連入點流量為1,可以逃脫的出點連匯點。
然後dinic即可。
#include
#include
#include
#include
#define p(x,y,w) ((((x)-1)*m+(y))*2-w)
using
namespace std;
const
int n=
1e5+
10,m=
4e5+
10,inf=
2147483647/3
;struct nodea[m]
;int n,m,tot=
1,s,t,d,ans;
int ls[n]
,dep[n]
;char str[30]
;queue<
int> q;
void
addl
(int x,
int y,
int w)
intdis
(int x1,
int y1,
int x2,
int y2)
void
connect
(int x,
int y)
bool
bfs()}
return0;
}int
dinic
(int x,
int flow)if(
!rest)dep[x]=0
;return rest;
}void
net_work()
intmain()
}for
(int i=
1;i<=n;i++)}
net_work()
;printf
("%d"
,ans)
;}
題解 P2472 SCOI2007 蜥蜴
題目背景 07四川省選 題目描述 在乙個r行c列的網格地圖中有一些高度不同的石柱,一些石柱上站著一些蜥蜴,你的任務是讓盡量多的蜥蜴逃到邊界外。每行每列中相鄰石柱的距離為1,蜥蜴的跳躍距離是d,即蜥蜴可以跳到平面距離不超過d的任何乙個石柱上。石柱都不穩定,每次當蜥蜴跳躍時,所離開的石柱高度減1 如果仍...
P2472 SCOI2007 蜥蜴(最大流)
自己第一道獨立做題且一遍ac的網路流題紀念.看到這道題我就想到網路流建圖的方式了.首先根據每個高度,我們將每個點拆成兩個點限流.之後根據跳的最大距離,連邊,最後能跳出邊界的與t連邊,跑最大流即可.突然發現最大流與網格圖好像有著某種聯絡.include define ll long long usin...
洛谷P2472 SCOI2007 蜥蜴 題解
這道題用最大流解決。首先構建模型。一根柱子可以跳入和跳出,於是拆成兩個點 入點和出點。每一根柱子的入點和出點連一條流量為高度的邊,來限制蜥蜴跳入的次數。當柱子a可以調到柱子b時,就從a的出點向b的入點連邊,流量inf。s向所有有蜥蜴的柱子的入點連邊,流量為1 t表示地圖外一點,當一根柱子能跳到地圖外...