題目:
建模:一種新的建圖思路
周圍加了一圈d,令d為奇," . "為偶,若d確實為奇,與ss連inf,若為偶,與tt 連 inf。「.」同理。
然後與周圍的點連 1 。
盡量保持不變的**習慣,最小割就從(1,1)開始建。
#include#include#include#include#include#include#define mem(a,x) memset(a,x,sizeof(a))
using namespace std;
const int inf = 0x3f3f3f3f;
const int maxn = 50 + 5;
const int maxs = maxn*maxn + 5;
int n,m;
char mp[maxn][maxn];
struct edge;
struct dicnic;
edge e2 = ;
edges.push_back(e1);
edges.push_back(e2);
int m = edges.size();
g[from].push_back(m-2);
g[to].push_back(m-1);
}void init(int n)
edges.clear();
}bool bfs()}}
return vis[t];
}int dfs(int x ,int a)
}return flow;
}int maxflow(int s,int t)
return flow;
}}g;int drx = ;
int dry = ;
bool valid(int x,int y)
int id(int x,int y)
int main()
}printf("case %d: %d\n",cases++,(n+2)*(m+1)+(n+1)*(m+2)-g.maxflow(ss,tt));
}return 0;
}
HDU 4859 海岸線 最小割
強烈建議閱讀一下最小割模型在資訊學競賽中的應用 其中2.2.2的optimal marks一題和此題建模非常相像。在原圖外圍虛擬一圈 d 我們要最大化的周長,就可以等價為最大化相鄰的 d 和 的總對數,也就是最大化相鄰格仔不同型別的總對數。按照 中的建圖方式,我們可以最小化相鄰格仔不同型別,反過來想...
hdu 4859 海岸線 最小割
歡迎來到珠海!由於土地資源越來越緊張,使得許多海濱城市都只能依靠填海來擴充套件市區以求發展。作為z市的決策人,在仔細觀察了z市地圖之後,你準備通過填充某些海域來擴充套件z市的海岸線到最長,來吸引更多的遊客前來旅遊度假。為了簡化問題,假設地圖為乙個n m的格仔,其中一些是陸地,一些是可以填充的淺海域,...
HDU 4859 海岸線 最小割
這題考察的是最小割。我們可以這樣想 海岸線的長短變化都是e引起的,我們通過把 e 變成 或 d 來使海岸線最大化。我們要算海岸線就是算格仔 和格仔 d 在原有地圖周圍四面都要加 d 相鄰的面數,要使它最大,就是要使 與 d 與 d 相鄰的面數最小,而面數最小可以用最小割來做。現在我們先把格仔上的點黑...