洛谷 P1034 矩形覆蓋(dfs)

2021-08-30 09:05:36 字數 888 閱讀 8367

有n個點k個矩陣,k個矩陣包含n個點,求這k個矩陣的最小面積

因為資料範圍很小,所以可以直接暴搜,求每個點可以存在矩陣的位置,利用幾次剪枝(因為資料太水,不剪也行)即可通過

#include

using namespace std;

#define ll long long

const

int maxn =55;

const

int inf =

0x3f3f3f3f

;struct pointpoint[maxn]

;struct regreg[5]

;int n, k, ans = inf;

bool in

(reg a,

int x,

int y)

bool judge

(reg a, reg b)

void

dfs(

int num)

value +

=(reg[i]

.r - reg[i]

.l)*

(reg[i]

.u - reg[i]

.d);

//value加上矩陣的面積}if

(value >= ans)

return

;//如果value大於已得的值,return

if(num > n)

//每乙個點有m種可能的矩陣

for(

int i =

1; i <= k; i ++

)else}}

intmain

(int argc,

char

const

*argv)

洛谷 P1034 矩形覆蓋 dfs

可能是資料太水了瞎搞都可以過。判斷兩個平行於座標軸的矩形相交 含頂點與邊相交 的 一併附上。記得這裡的xy和udlr是指數學上的座標軸。includeusing namespace std define ll long long struct point p 51 struct rectangle ...

洛谷P1034矩形覆蓋

據說是dp,所以我用dfs,居然a了,資料真水 說說思路,我們要求覆蓋所有點且不能重疊,顯然我們要從點入手,我們可以列舉每個點被哪個矩形重疊,因為如果列舉矩形覆蓋點的話,貌似不可做,具體怎麼實現呢?最好小夥伴們手動畫個圖,一下就明白了,列舉每個點被哪個矩形覆蓋,那麼必然是要根據點的座標來調整矩形的位...

搜尋 洛谷P1034 矩形覆蓋

然後就知道這個是noip提高的題目 說好k 4,其實k最大只有3 然後資料沒有對每一種情況近判斷性,所以本來300 的 因為有些用不到可以變成100 我曹 include include include define ll long long using namespace std int x 51...