P1228 地毯填補問題(遞迴 分治)

2021-10-18 22:54:24 字數 1002 閱讀 7366

p1228 地毯填補問題

其實這道題目一點也不會寫,光看懂別人的解題思路就花了好長時間。

那現在我來說說我對這個題目的理解。

1.所謂拐點就是每種毯子,中間的那塊,也就是那個點的座標。

2.可以發現當格仔22時,必有一種填充方式。

3.由2引申,我們可以把迷宮全部分成22,也就是遞迴結束的標誌。

#include

using

namespace std;

int n,k,a[

1201][

1201];

//這道題目的思路:找中點,然後判斷中點的位置。公主的位置有4種情況。

//然後把迷宮分為四塊,遞迴直到分成2*2大小的格仔。

//還有一點要說的是,公主填完一塊後,則那3塊作為公主,繼續在周圍填。

//還有要說的,題目中所謂的拐點就是中間的那個座標,也就是要輸出的座標。

void

dfs(

int x1,

int y1,

int x2,

int y2,

int x,

int y)

int x=

(x2-x1+1)

/2+x1-1;

int y=

(y2-y1+1)

/2+y1-1;

//取出中點

//接下來就是分治特殊點的位置,往那個方向搜尋。

if(x<=x&&y<=y)

//公主在中點的左上角

if(x<=x&&y>y)

// 公主在中點的右上角

if(x>x&&y<=y)

//公主在中點的左下角

if(x>x&&y>y)

//公主在中點的右下角

}int

main()

P1228 地毯填補問題(遞迴)

題意 給你一張大小為2k 2k 的地圖,你要用4種地毯去填充這張地圖,規定有乙個點不能填,每個格仔只能被一張地毯覆蓋,讓你輸出覆蓋方案。方案為第i種地毯在點 x,y 處拐角 地毯樣式 如果在乙個2 2的地圖裡,我們顯然直接用一種給它補全就行。如果在乙個4 4的地圖裡,我們完成以下操作後,需要補全其他...

P3397 地毯 差分

題目背景 此題約為noip提高組day2t1難度。題目描述 在 n nn times nn n 的格仔上有 mmm 個地毯。給出這些地毯的資訊,問每個點被多少個地毯覆蓋。輸入格式 第一行,兩個正整數 n,mn,mn,m。意義如題所述。接下來 mmm 行,每行兩個座標 x1,y1 x 1,y 1 x1...

P3397 地毯(二維差分)

題意 在乙個n n的地圖中,有m張地毯,每張矩形地毯的左上角和右下角已知,輸出最後整個地圖的每個點有多少張地毯覆蓋。思路 二維差分很明顯。二維字首和 二維線段樹也可以做。我們首先要用乙個陣列,記錄變化。對於 x1,y1 到 x2,y2 這一區間全部加1的話,我們需要a x1 y1 1,a x2 1 ...