1. 程式人生 > >P3272 [SCOI2011]地板(插頭DP)

P3272 [SCOI2011]地板(插頭DP)

描述 三種 分類討論 會有 限制 構建 .org 兩種 pro

[題面鏈接] https://www.luogu.org/problemnew/show/P3272

[題目描述] 有一個矩陣,有些點必須放,有些點不能放,用一些L型的圖形放滿,求方案數

[題解] (版權所有) https://www.luogu.org/blog/dedicatus545/solution-p3272

第一種情況:當前狀態下,當前格子上方和左方都沒有插頭

這時我們需要找一個L形來把這個格子填上,那麽我們可能有三種決策:

  決策一:給這個格子加一個二號下插頭和一個二號右插頭,此時這個格子是一個新的L形的拐角

  決策二:給這個格子加一個一號下插頭,此時相當於構建了一個先向下再向右的L形,從當前格子開始

  決策三:給這個格子加一個一號右插頭,此時相當於構建了一個先向右再向下的L形,從當前格子開始

第二種情況:當前狀態下,當前格子上方有一個一號下插頭,左方沒有插頭

這時相當於上面有一個L形的未拐彎的一邊伸過來了,有兩種決策:

  決策一:L形不拐彎,繼續向下延伸,當前格子只有一個一號下插頭

  決策二:L形在當前格子拐彎,L形向右延伸,當前格子只有一個二號右插頭

第三種情況:當前狀態下,當前格子左方有一個一號右插頭,上方沒有插頭

與第二種情況類似,故不贅述

第四種情況:當前狀態下,當前格子上方有一個二號下插頭,左方沒有插頭

這時相當於上面有一個L形的拐過彎的一邊伸過來了,有兩種決策:

  決策一:L形繼續延伸,當前格子有一個二號下插頭

  決策二:L形在當前格子終止,當前格子沒有插頭

決策二時註意,如果當前處在最後一個沒有障礙的格子,那麽需要統計入最終答案

第五種情況:當前狀態下,當前格子左方有一個二號右插頭,上方沒有插頭

與第四種情況類似,故不贅述

第六種情況:當前狀態下,當前格子左方和上方都有一號插頭

此時相當於兩條“臂”伸了過來,在當前格子相交,應該合並成一個L形

當前格子相當於一個L形的拐彎處,沒有插頭

我們發現,情況一和情況六已經覆蓋了四種L形的擺放方式,同時也不會有一個二號插頭一個一號插頭或者兩個二號插頭的情況出現——它們被上文的六種情況限制了

故這種分類討論方式可以覆蓋所有情況

總結

\(1.\) 插頭定義在掃描線上方,定義處理前插頭在左上的上方,處理完當前點後對應的掃描線圖形後插頭在右下的上方

\(2.\) 插頭DP神題,註意分類討論,一般分類標準為向右向下延伸,而向左向上的情況則通過在某一個點合並上面和左邊傳來的

P3272 [SCOI2011]地板(插頭DP)