HDU 4859 海岸線 ISAP 最小割

2021-06-22 20:47:01 字數 2151 閱讀 9184

思路:

如果將e確定狀態了,當乙個邊的兩邊,乙個是『.』乙個是『d』的時候,答案就是+1。即乙個邊兩邊不同色,答案+1。這就和spoj839很像,然而,spoj839是求得不同色的最小,而不是最大。題目是想得到不同色邊的最大,我們可以考慮同色邊的最小。但是似乎直接建二分圖是困難的,因為建立這個二分圖有個要求,左右部分內部點連邊,不能使得答案有變化。

為了解決這個問題(原來的圖,使得同色的邊最少),我們不放將方格按奇偶分為兩部分,任意選乙個部分,將其所有點取反。這樣操作後,二分圖就可以建立了。首先,二分圖左右部分內部的點只有兩種情況:1、相鄰的,2、不相鄰的。如果是情況1,說明他們原來是不同色的,並不能使得「同色的邊的個數」變化,如果是不相鄰的,那麼本來就沒有邊,「同色的邊」自然不會有變化。而二分圖左右部分之間的兩個點,如果有邊,兩個點自然是相鄰的,又由於我們把原圖的一部分取反了,其實連邊的意思是這兩個點原來同色的意思。

//#pragma comment(linker, "/stack:102400000,102400000")

#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;

#define mp(x,y) make_pair((x),(y))

#define pb(x) push_back(x)

typedef __int64 ll;

//typedef unsigned __int64 ull;

/* ****************** */

const int inf=100011122;

const double inff=1e100;

const double eps=1e-8;

const int mod=1000000007;

const int nn=50;

const int mm=1000010;

/* ****************** */

struct g

e[nn*nn*4*2];

int p[nn*nn],t;

int tp[nn*nn],num[nn*nn],dis[nn*nn];

int preb[nn*nn],pred[nn*nn];

int qw[nn*nn];

int mat[nn][nn];

char ss[nn];

void add(int u,int v,int cap)

int isap(int st,int en,int n)

// num[0]=real_n;

//預處理方法2,需要新加入佇列陣列qw

int head,tail;

for(i=0;i<=real_n;i++)

head=tail=0;

qw[head=tail=0]=en;

dis[en]=0;

num[0]++;

while(head<=tail)}}

for(i=0;i<=n;i++)

tp[i]=p[i];

u=st;

while(dis[st]0 && dis[u]==dis[e.v]+1)

}if(!ok)

if(--num[ dis[u] ]==0)break;

num[ dis[u]=temp+1 ]++;

tp[u]=p[u];

if(u!=st)u=pred[u];}}

return f;

}int main()

}for(i=0;i<=n+1;i++)

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

}st=(n+2)*(m+2);

en=st+1;

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

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

else if(mat[i][j]==1)

else

}if(j<=m)}}

}ans=(m+2)*(n+1) + (n+2)*(m+1) - isap(st,en,en);

printf("case %d: ",++ee);

printf("%d\n",ans);

}return 0;

}

HDU 4859 海岸線 最小割

強烈建議閱讀一下最小割模型在資訊學競賽中的應用 其中2.2.2的optimal marks一題和此題建模非常相像。在原圖外圍虛擬一圈 d 我們要最大化的周長,就可以等價為最大化相鄰的 d 和 的總對數,也就是最大化相鄰格仔不同型別的總對數。按照 中的建圖方式,我們可以最小化相鄰格仔不同型別,反過來想...

hdu 4859 海岸線(最小割)

題目 建模 一種新的建圖思路 周圍加了一圈d,令d為奇,為偶,若d確實為奇,與ss連inf,若為偶,與tt 連 inf。同理。然後與周圍的點連 1 盡量保持不變的 習慣,最小割就從 1,1 開始建。include include include include include include def...

hdu 4859 海岸線 最小割

歡迎來到珠海!由於土地資源越來越緊張,使得許多海濱城市都只能依靠填海來擴充套件市區以求發展。作為z市的決策人,在仔細觀察了z市地圖之後,你準備通過填充某些海域來擴充套件z市的海岸線到最長,來吸引更多的遊客前來旅遊度假。為了簡化問題,假設地圖為乙個n m的格仔,其中一些是陸地,一些是可以填充的淺海域,...