BZOJ2132 圈地計畫

2022-05-02 15:06:13 字數 2486 閱讀 2042

time limit: 2 sec memory limit: 256 mb

submit: 1675 solved: 782

[submit][status][discuss]

最近房地產商gdoi(group of dumbbells or idiots)從noi(nuts old idiots)手中得到了一塊開發土地。據了解,

這塊土地是一塊矩形的區域,可以縱橫劃分為n×m塊小區域。gdoi要求將這些區域分為商業區和工業區來開發。根

據不同的地形環境,每塊小區域建造商業區和工業區能取得不同的經濟價值。更具體點,對於第i行第j列的區域,

建造商業區將得到aij收益,建造工業區將得到bij收益。另外不同的區域連在一起可以得到額外的收益,即如果區

域(i,j)相鄰(相鄰是指兩個格仔有公共邊)有k塊(顯然k不超過4)型別不同於(i,j)的區域,則這塊區域能增加k

×cij收益。經過tiger.s教授的勘察,收益矩陣a,b,c都已經知道了。你能幫gdoi求出乙個收益最大的方案麼?

輸入第一行為兩個整數,分別為正整數n和m,分別表示區域的行數和列數;

第2到n+1列,每行m個整數,表示商業區收益矩陣a;

第n+2到2n+1列,每行m個整數,表示工業區收益矩陣b;

第2n+2到3n+1行,每行m個整數,表示相鄰額外收益矩陣c。

任何數字不超過1000」的限制

輸出只有一行,包含乙個整數,為最大收益值。

3 31 2 3

4 5 6

7 8 9

9 8 7

6 5 4

3 2 1

1 1 1

1 3 1

1 1 1

對於100%的資料有n,m≤100

資料已加強,並重測--2015.5.15

最小割。如果相鄰割相同的話,不(呵)難(呵)想出建模:

考慮均選a、均選b、1a2b、1b2a情況下的答案,或者考慮每條路徑的含義,對於某條路徑割掉某條邊的含義

發現答案為a + a + b + b + c1 + c2 - 最小割

但是如果相鄰割要求不同才能有價值,那麼中間的c1 + c2應為-c1 - c2,顯然不能有負容量。

怎麼辦?

換!

考慮均選a、均選b、1a2b、1b2a情況下的答案,或者考慮每條路徑的含義,對於某條路徑割掉某條邊的含義

答案為a + a + b + b + c1 + c2 - 最小割

如此建圖即可

#include #include #include #include #include #include #include inline int max(int a, int b)

inline int min(int a, int b)

inline int abs(int x)

inline void swap(int &x, int &y)

inline void read(int &x)

const int inf = 0x3f3f3f3f;

const int dx[4] = ;

const int dy[4] = ;

struct edge

edge(){}

}edge[1000010];

int head[100010], cnt = 1, s, t, q[100010], he, ta, h[100010], ans;

inline void insert(int a, int b, int c)

bool bfs()

} return h[t] != -1;

}int dfs(int x, int f)

} if(!used) h[x] = -1;

return used;

}void dinic()

int n,m,a[1010][1010],b[1010][1010],c[1010][1010],num[1010][1010], tot, sum;

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)

read(c[i][j]);

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

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

if((i + j) & 1)

for(int k = 0;k < 4;++ k)

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要求將這些區域分為商業區和工業區來開發。根據不同的地形...