bzoj 2132 圈地計畫 網路流

2021-07-24 10:14:32 字數 993 閱讀 5457

傳送門

很容易看出是用最小割來做,關鍵是要找出如何建圖。

注意到如果不染色的話沒那麼好做,所以先把所有點黑板染色,s向黑點連流量為a[i,j]的邊,白點向t連流量為b[i,j]的邊。對於兩個相鄰的節點(x1,y1)和(x2,y2),分別從x向y和y向x連一條流量為c[x1,y1]+c[x2,y2]的邊,然後跑最大流即可。

#include

#include

#include

#include

#include

#include

#define n 20005

#define inf 0x7fffffff

using namespace std;

int cnt,last[n],dis[n],dx[4]=,dy[4]=,s,t,n,m,cur[n],ans,a[105][105];

struct edgee[n*100];

queue q;

int point(int

x,int

y)void addedge(int u,int v,int c)

bool bfs()

}return0;}

int dfs(int

x,int maxf)

return ret;

}void dinic()

}int main()

for (int i=1;i<=n;i++)

for (int j=1;j<=m;j++)

for (int i=1;i<=n;i++)

for (int j=1;j<=m;j++)

scanf("%d",&a[i][j]);

for (int i=1;i<=n;i++)

for (int j=1;j<=m;j++)

}dinic();

printf("%d",sum-ans);

return

0;}

bzoj2132 圈地計畫

有個n m的矩形,每個區域可以建造商業區或工業區,分別獲得ai,j和bi,j的收益。乙個格仔如果有與其相鄰的k個格仔與其型別不同,則可以帶來ci,j的收益。求最大收益 我們可知,i,j和k,l兩個格仔型別不同就會帶來ci,j ck,l的收益。這是經典的二元關係,是網路流問題。x選商業 x選工業 y選...

bzoj 2132 圈地計畫

time limit 2 sec memory limit 256 mb submit 918 solved 417 submit status discuss 最近房地產商gdoi group of dumbbells or idiots 從noi nuts old idiots 手中得到了一塊開...

BZOJ2132 圈地計畫

bzoj2132 圈地計畫 最近房地產商gdoi group of dumbbells or idiots 從noi nuts old idiots 手中得到了一塊開發土地。據了解,這塊土地是一塊矩形的區域,可以縱橫劃分為n m塊小區域。gdoi要求將這些區域分為商業區和工業區來開發。根據不同的地形...