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