在平面上有 n 個點(n <= 50),每個點用一對整數座標表示。例如:當 n=4 時,4個點的座標分另為:p1(1,1),p2(2,2),p3(3,6),p4(0,7),見圖一。
這些點可以用 k 個矩形(1<=k<=4)全部覆蓋,矩形的邊平行於座標軸。當 k=2 時,可用如圖二的兩個矩形 sl,s2 覆蓋,s1,s2 面積和為 4。問題是當 n 個點座標和 k 給出後,怎樣才能使得覆蓋所有點的 k 個矩形的面積之和為最小呢。約定:覆蓋乙個點的矩形面積為 0;覆蓋平行於座標軸直線上點的矩形面積也為0。各個矩形必須完全分開(邊線與頂點也都不能重合)。
輸入格式:
n k xl y1 x2 y2 ... ...
xn yn (0<=xi,yi<=500)
輸出格式:
輸出至螢幕。格式為:
乙個整數,即滿足條件的最小的矩形面積之和。
輸入樣例#1:
4 2輸出樣例#1:1 12 2
3 60 7
4資料略水,其他做法...(你懂得),還是搜尋穩。
1 #include2 #include3 #include4 #include5using
namespace
std;
6int
read()
9while(ch>='
0'&&ch<='9')
10return x*f;11}
12int n,m,ans=0x3f3f3f3f;13
struct
data1d1[55
];16
struct
data2d2[5
];20
bool
in(data2 a,int xx,int
yy)24
bool
is_in(data2 a,data2 b)
29void dfs(int
k)38
if(s>=ans)return;39
if(k>n)
40for(int i=1;i<=m;i++)
47else
51 dfs(k+1
);52 d2[i]=tmp;53}
54}55int
main()
noip2002 矩形覆蓋
在平面上有 n 個點 n 50 每個點用一對整數座標表示。例如 當 n 4 時,4個點的座標分別為 p1 1,1 p2 2,2 p3 3,6 p4 0,7 如圖1。這些點可以用 k 個矩形 1 k 4 全部覆蓋,矩形的邊平行於座標軸。當 k 2 時,可用如圖2的兩個矩形 sl,s2 覆蓋,s1,s2...
NOIP 2002 矩形覆蓋
題目描述 在平面上有 n 個點 n 50 每個點用一對整數座標表示。例如 當 n 4 時,4個點的座標分另為 p1 1,1 p2 2,2 p3 3,6 p4 0,7 見圖一。這些點可以用 k 個矩形 1 k 4 全部覆蓋,矩形的邊平行於座標軸。當 k 2 時,可用如圖二的兩個矩形 sl,s2 覆蓋,...
noip2002矩陣覆蓋(搜尋)
矩陣覆蓋 在平面上有 n 個點 n 50 每個點用一對整數座標表示。例如 當 n 4 時,4個點的座標分另為 p1 1,1 p2 2,2 p3 3,6 p4 0,7 見圖一。這些點可以用 k 個矩形 1 k 4 全部覆蓋,矩形的邊平行於座標軸。當 k 2 時,可用如圖二的兩個矩形 sl,s2 覆蓋,...