矩形覆蓋(codevs 1101)

2022-05-14 16:19:50 字數 1375 閱讀 5060

題目描述description

在平面上有 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。各個矩形必須完全分開(邊線與頂點也都不能重合)。

輸入描述input description

n kxl y1

x2 y2

... ...

xn yn (0<=xi,yi<=500)

輸出描述output description

乙個整數,即滿足條件的最小的矩形面積之和。

樣例輸入sample input

4 21 1

2 23 6

0 7樣例輸出sample output

4資料範圍及提示data size & hint

k<4

官方是k<=4,但是標程解法在k=4時是有反例的。官方的資料也沒有出現k=4的情況

/*

由於k<=3,所以可以分著做

*/#include

#include

#include

#include

#define n 52

#define inf 10000000

using

namespace

std;

intn,m;

struct

node

;node a[n];

bool cmp1(const node&s1,const node&s2)

bool cmp2(const node&s1,const node&s2)

int work1(int s,int

t)

return (mxx-mnx)*(mxy-mny);

}int work2(int s,int

t)int work3(int s,int

t)int

main()

view code

矩形覆蓋問題

問題描述 用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。現在問用8個2 1的小矩形無重疊地覆蓋乙個2 8的大矩形,總共有多少種方法?矩形如下 分析 我們可以把2 8的覆蓋方法記為f 8 用第乙個1 2的矩形去覆蓋大矩形的最左邊時有兩個選擇,豎著放或橫著放。如果豎著放,那麼右邊還剩2 7的矩形區域,這...

58 矩形覆蓋

矩形覆蓋 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?斐波那契數列 2 n的大矩形,和n個2 1的小矩形 其中target 2為大矩陣的大小 有以下幾種情形 1 target 0 大矩形為 2 0,直接return ...

矩形覆蓋(python)

原始碼 我們可以用2 1的小矩形橫著或者豎著去覆蓋更大的矩形。請問用n個2 1的小矩形無重疊地覆蓋乙個2 n的大矩形,總共有多少種方法?coding utf 8 依舊是斐波那契數列 2 n的大矩形,和n個2 1的小矩形 其中 2 target 為大矩陣的大小 有以下幾種情形 1 target 0 大...