洛谷P1034 矩形覆蓋 暴搜

2022-08-05 04:03:13 字數 1169 閱讀 4954

洛谷p1034 矩形覆蓋

暴搜因為 k<=4 所以爆搜一下就行

1、對於每個點 爆搜他屬於哪乙個矩形

2、並且 用這個點 來更新矩形的 左邊界 右邊界 上邊界 下邊界

3、回溯

優化 1、一邊加入點一邊判斷是否符合要求

2、已有的矩形中是否有相互覆蓋的情況

3、以及現在的矩形面積是否大於已有的 最小答案的矩形 如果是 說明不可能更優,那麼就直接退出

1 #include 2 #include 3 #include 4 #include 5 #include 

6 #include 7 #include 8 #include 9

using

namespace

std ;

1011 inline int

read() 12

16while(ch>='

0'&&ch<='

9')

17return x*f ; 18}

1920

21const

int maxn = 51,inf =1e9 ;

22struct

dot d[51

];25

struct

noderec[5

] ;28

intn,k,ans ;

2930 inline int

gets()

3138

return

sum ; }

3940

41 inline bool conf(int i,int

j) 42

5253 inline bool

can()

5460

61 inline void dfs(int

used)

6269

for(int i=1;i<=k;i++)

7079}80

81int

main()

8293

94 dfs( 0

) ;

95 printf("

%d\n

",ans) ;

9697

98return0;

99 }

洛谷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...

洛谷 P1034 矩形覆蓋(dfs)

有n個點k個矩陣,k個矩陣包含n個點,求這k個矩陣的最小面積 因為資料範圍很小,所以可以直接暴搜,求每個點可以存在矩陣的位置,利用幾次剪枝 因為資料太水,不剪也行 即可通過 include using namespace std define ll long long const int maxn ...