題目描述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的情況
/*view code由於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()
矩形覆蓋問題
問題描述 用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 大...