hdu 4859 海岸線(最小割)

2021-08-09 09:06:01 字數 1088 閱讀 2352

題目:

建模:一種新的建圖思路

周圍加了一圈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 相鄰的面數最小,而面數最小可以用最小割來做。現在我們先把格仔上的點黑...