其實感覺網路流考的不是這個演算法,考的是你能想到這題是網路流,而我今天也做了\(5\)道題,因為知道是網路流的題,感覺就是把建邊改改就a了 (雖然有一題de了一下午bug
算了,廢話不多說,講題吧
這題其實不難(主要知道是網路流的題,
從源點向每乙個\(byx\)的人連一條邊,邊的容量為這個人的壽命,然後從這個人向他可以打敗的人連一條容量為\(1\)的邊,因為每兩個人只能比一場,最後從詩乃醬的人向匯點連一條容量為此人壽命的邊。
注意,yyy是可以給j續壽命的,而且自己的壽命不會減少,所以就算這個yyy的壽命是\(0\),也可以給j續命。
然後?然後就跑最大流了,這個應該不用說了。。
#include#define inf 0x3f3f3f3f
#define re register
#define min(x,y) ((x)<(y)?(x):(y))
using namespace std;
const int n=21500;
struct edgee[n];
int n,m,s,a[n],b[n],t,ans,s1,cnt=1,hd[n],num1,num2,dep[n],cur[n];
bool ko[10][10];
inline void add(int u,int v,int val)
string ch;
queue q;
bool bfs()
} return 0;
}int dinic(int u,int flow)
return flow-rest;
}int main()
for(re int i=1;i<=n;i++)
for(re int i=1,val;i<=n;i++)
for(re int i=1,val;i<=n;i++)
for(;bfs();ans+=dinic(s,inf));
printf("%d",ans);
return 0;
}
這題雖然評分是省選,其實可以算最大流的模板題了,很適合剛學最大流的oier做(至少比上一題簡單
因為輸入的是書與作業本,答案的可能匹配,所以在網路流分層時,可以吧書放在中間,然後再建開始邊。
水的網路流題建邊也差不多,先從匯點向作業本建容量為\(1\)的邊,因為每一本作業本只能匹配一次,然後就是再向書,再向答案,最後向匯點建邊。
#include#define inf 0x3f3f3f3f
#define re register
#define min(x,y) ((x)<(y)?(x):(y))
using namespace std;
const int n=41005,m=140005;
struct edgee[m];
int n1,n2,n3,m1,m2,s,t,ans,cnt=1,hd[n],dep[n],cur[n];
inline void add(int u,int v,int val)
string ch;
queue q;
bool bfs()
} return 0;
}int dinic(int u,int flow)
return flow-rest;
}int main()
scanf("%d",&m2);
for(re int i=1,u,v;i<=m2;i++)
for(;bfs();ans+=dinic(s,inf));
printf("%d",ans);
return 0;
}
這題需要一點思考,而且不會一眼看出來是一道網路流。
先把地圖轉化一下,變成乙個有\(n\times m\)個節點的網路圖,每個節點向四周連邊,而我們的答案該怎麼求?用圍欄可以看成把這條邊割掉,而答案就是求最小割的大小。我們好像剛學最大流是就知道了,最大流等於最小割,所以把羊或者狼的點連上源點,另外乙個連上匯點,跑最大流就好了,不是任何動物的領地的點不用管。
這題又比較基礎了,從每個點向它能到達的點連邊,然後從源點向有蜥蜴的石柱連邊,最後那些石柱可以一步跳出地圖,就把它們連向匯點。
但這題也要拆點,把每個點拆成兩個,中間連一條容量為石柱高度的邊,表示最多能通過多少條蜥蜴,然後跑最大流了。
好像都挺水的哩
網路流 最大流 最小費 回顧
1 最大流 容量網路作為問題的有向圖.要有反向弧用於回流,且反向弧容量為0.殘量網路,殘量 容量 當前流.容量 當前流 殘量都有反向弧 殘量 0,代表可達,所以要不斷在殘量網路中找 s 到 t 的可達路.稱為增廣路.什麼叫增廣路?就是當你把這條路加進來後,會使你的結果更優.在最大匹配中交錯軌就是它的...
網路流專題練習Day2
04 17 目前做了 7 題由於目前六道都是1a感覺非常爽.狼愛上羊啊愛的瘋狂,誰讓他們真愛了一場 狼愛上羊啊並不荒唐,他們說有愛就有方向 orez聽到這首歌,心想 狼和羊如此和諧,為什麼不嘗試羊狼合養呢?說幹就幹!orez的羊狼圈可以看作乙個n m個矩陣格仔,這個矩陣的邊緣已經裝上了籬笆。可是dr...
回顧(練習題)
簡述 django mvc 和 mtv mvc 全名是model view controller 是模型 model 檢視 view 控制器 controller 的縮寫 一種軟體設計典範,用一種業務邏輯 資料 介面顯示分離的方法組織 將業務邏輯聚集到乙個部件裡面,在改進和個性化定製介面及使用者互動...