題目描述
在平面上有n個點(n≤50),每個點用一對整數座標表示。例如:當n=4 時,4個點的座標分另為:p_1 (1,1),p_2 (2,2),p_3(3,6),p_4(0,7),見圖一。
這些點可以用k個矩形(1≤k≤4)全部覆蓋,矩形的邊平行於座標軸。當 k=2 時,可用如圖二的兩個矩形 s_1,s_2覆蓋,s_1,s_2面積和為4。問題是當n個點座標和k給出後,怎樣才能使得覆蓋所有點的k個矩形的面積之和為最小呢?
約定:覆蓋乙個點的矩形面積為0;覆蓋平行於座標軸直線上點的矩形面積也為0。各個矩形必須完全分開(邊線與頂點也都不能重合)。
輸入格式
n kx_1 y_1
x_2 y_2
… …x_n y_n
輸出格式
輸出至螢幕。
格式為:
1個整數,即滿足條件的最小的矩形面積之和。
輸入輸出樣例
輸入 #1
4 21 1
2 23 6
0 7輸出 #1
4ac**
#include
#define re register int
using
namespace std;
struct node e[
505]
;struct rec p[5]
;int n,k,ans=
0x3f3f3f3f
;inline
intmin
(int a,
int b)
inline
intmax
(int a,
int b)
inline
bool
in(rec a,
int x,
int y)
inline
bool
judge
(rec a,rec b)
inline
void
dfs(
int num)
} value+
=(p[i]
.r-p[i]
.l)*
(p[i]
.u-p[i]
.d);}if
(value>ans)
return
;//最優性剪枝
if(num>n)
for(re i=
1;i<=k;i++
)else}}
intmain()
dfs(1)
;printf
("%d"
,ans)
;return0;
}
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 覆蓋,...
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 覆蓋,s1,s2...