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)手中得到了一塊開發土地。據了解,這塊土地是一塊矩形的區域,可以縱橫劃分為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。第一行,兩個整數,分別是n和m(1≤n,m≤100);
任何數字不超過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
81【資料規模】
對於100%的資料有n,m≤100
資料已加強,並重測--2015.5.15
在下面對拍,最大資料都不會錯,交上去很快就wa了,不知道為什麼,很奇怪。
#include#include#include#include#include#include#define n 120
#define m 1000003
using namespace std;
int n,m,tot=-1,sum;
int next[m],point[m],remain[m],v[m];
int a[n][n],b[n][n],c[n][n],p[n][n];
int deep[m],cur[m];
int x[10]=,y[10]=;
const int inf=1e9;
void add(int x,int y,int z)
void addedge(int x,int y,int z)
bool bfs(int s,int t)
if (deep[t]>inf) return false;
return true;
}
int dfs(int now,int t,int limit)
}
return flow;
} int dinic(int s,int t)
int main()
for (int i=1;i<=n;i++)//黑白染色
for (int j=1;j<=m;j++)
/*for (int i=1;i<=n;i++)
int t=dinic(0,num+1);
// cout<
bzoj2132 圈地計畫
有個n m的矩形,每個區域可以建造商業區或工業區,分別獲得ai,j和bi,j的收益。乙個格仔如果有與其相鄰的k個格仔與其型別不同,則可以帶來ci,j的收益。求最大收益 我們可知,i,j和k,l兩個格仔型別不同就會帶來ci,j ck,l的收益。這是經典的二元關係,是網路流問題。x選商業 x選工業 y選...
BZOJ2132 圈地計畫
bzoj2132 圈地計畫 最近房地產商gdoi group of dumbbells or idiots 從noi nuts old idiots 手中得到了一塊開發土地。據了解,這塊土地是一塊矩形的區域,可以縱橫劃分為n m塊小區域。gdoi要求將這些區域分為商業區和工業區來開發。根據不同的地形...
BZOJ2132 圈地計畫
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 手中得到了一塊...