問題描述
m*m的方陣上有棵蔥,你要修一些柵欄把它們圍起來。乙個柵欄是一段沿著網格建造的封閉圖形(即要圍成一圈)。各個柵欄之間應該不相交、不重疊且互相不包含。如果你最多修k個柵欄,那麼所有柵欄的長度之和最小是多少?
輸入格式
第一行三個整數n,m,k。
接下來n行每行兩個整數代表某棵蔥的位置。
輸出格式
一行乙個整數代表答案。
樣例輸入1
6 1 4
1 3
4 2
4 4
6 4
樣例輸出1
18樣例輸入2
6 2 4
1 3
4 2
4 4
6 4
樣例輸出2
16 樣例解釋
你猜樹上有啥.
搜尋+奇妙的卡時竟然可以過。
通過畫圖可以知道,圍成不規則的圖形和圍成矩形花的代價是一樣的,這就把**難度降低了好多。
#include
#include
#include
#include
#include
#include
#include
#define inf 1000000000
#define ll long long
using namespace std;
intx[50],y[50],n,m,k;
int ans;
int sx[50],sy[50],mx[50],my[50],a[50];
void dfs(int t)//搜尋每棵蔥在哪個柵欄中
if(t>n)
ans=min(ans,sum);
return;
}int sum=0;
for(int i=1;i<=k;i++)
for(int i=1;i<=k;i++)
}int main()