BZOJ 2131 圈地計畫 最小割 黑白染色

2022-05-26 23:27:09 字數 1682 閱讀 9830

但是不同的是那一道題是相鄰的如果相同則有收益,這題是相鄰的不同才有收益。

轉化到建圖上面時,會發現,兩個相鄰的點連的邊容量會是負數。。

# include # include 

# include

# include

# include

# include

# include

# include

# include

# include

# include

# include

using

namespace

std;

# define lowbit(x) ((x)&(-x))

# define pi acos(-1.0

)# define eps 1e-8

# define mod

30031

# define inf

1000000000

# define mem(a,b) memset(a,b,

sizeof

(a))

# define for(i,a,n)

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

# define fo(i,a,n)

for(int i=a; ii)

# define bug puts("h

");# define lch p

<<1

,l,mid

# define rch p

<<1|1,mid+1

,r# define mp make_pair

# define pb push_back

typedef pair

pii;

typedef vector

vi;# pragma comment(linker,

"/stack:1024000000,1024000000")

typedef

long

long

ll;int

scan()

while(ch>='

0'&&ch<='9')

return x*f;

}const

int n=10005;//

code begin...

struct edgeedge[n*20

];int head[n], cnt=2, a[105][105], b[105][105], c[105][105

];int s, t, vis[n], n, m, ps[4][2]=;

queue

q;void add_edge(int u, int v, int

w)int get_xy(int x, int y)

intbfs()}}

return vis[t]!=-1;}

int dfs(int x, int

low)

}if (temp==low) vis[x]=-1

;

return low-temp;

}int

dinic()

intmain ()

}printf(

"%d\n

",sum-dinic());

return0;

}

view code

BZOJ2132 圈地計畫(最小割)

傳送門 抄黃學長的題解。黑白染色,對於每個黑點a,s a w商業,a t w工業,對於每個白點b,s b w工業,b t w商業,對於每對有關係的兩點a,b,a b c1 c2。這個建模感受一下就是對的。看黃學長的姿勢之後發現中間那兩條邊沒加反向邊,但是據atp說加了也沒錯,只是慢了一點。應該就是兩...

BZOJ 2132 圈地計畫 最小割

題目大意 有乙個n m的矩陣,在矩陣中填1或2會得到不同的權值。相鄰的兩個格仔數字不相同會得到額外的權值,求最大權值 最小割模型 同一事件兩種選擇獲得不同收益,一定條件下有額外收益,求最大收益。在本題中,相鄰格仔填不同數字會獲得額外收益,於是將矩陣黑白染色 i j 1 每個黑色格仔與s連邊代表填1,...

BZOJ2132 圈地計畫 最小割

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