P2327 SCOI2005 掃雷 模擬

2022-09-02 02:21:13 字數 1105 閱讀 8864

輸入格式:

第一行為n,第二行有n個數,依次為第二列的格仔中的數。(1<= n <= 10000)

輸出格式:

乙個數,即第一列中雷的擺放方案數。

輸入樣例#1: 

2

1 1

輸出樣例#1:

2

思路:

可根據左邊第乙個格仔和右邊第乙個格仔的方案(放or不放)推出左邊第二個格仔的方案,以此類推,最終可以推出左邊n個格仔的方案。因此,只要知道左邊第乙個格仔的方案,則整列的方案就是唯一的。

我們可以把第乙個格仔不放雷和第乙個格仔放雷的方案分別模擬,用a[i]表示右列的數字,用put[i]表示第i格的雷數,得出的答案只能是0 or 1 or 2。

注意一些不合法的情況:

1.當i=1時,put[1]+1a[i] 說明放的雷太多了 方案不合法

2.當1ac code:

#include#include

using

namespace

std;

int a[10010

];int put[10010

];int

main()

else

if(i!=n&&put[i-1]+put[i]+1==a[i]) put[i+1]=1

; }

if(!flag) ans++;

memset(put,

0,sizeof

(put));

flag=0

;

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

else

if(i!=n&&put[i-1]+put[i]+1==a[i]) put[i+1]=1

; }

if(!flag) ans++;

printf("%d

",ans);

return0;

}

洛谷 P2327 SCOI2005 掃雷

看起來我做的和其他題解不一樣 那就發一篇吧 首先本題情況看似無厘頭,但是仔細觀察,不難發現 我們可以假設第一種情況,接著可以推出第二種 然後有了兩個已知的後,第三個顯而易見 如果你要問我怎麼推出來的嗎,我在裡面說的的邏輯判斷已經很明白了 include include include include...

洛谷 P2327 SCOI2005 掃雷

輸入格式 第一行為n,第二行有n個數,依次為第二列的格仔中的數。1 n 10000 輸出格式 乙個數,即第一列中雷的擺放方案數。輸入樣例 1 2 1 1 輸出樣例 1 2演算法1 列舉左邊每個位置是否有雷,複雜度o 2 n n 演算法2 我們發現,當前兩個位置確定時,後面的位置也就可以推出來了。於是...

洛谷P2327 SCOI2005 掃雷

輸入格式 第一行為n,第二行有n個數,依次為第二列的格仔中的數。1 n 10000 輸出格式 乙個數,即第一列中雷的擺放方案數。輸入樣例 1 2 1 1 輸出樣例 1 2迷之dp,如果沒看演算法標籤,可能會想岔到數學方向。乙個數字會影響它正左 左上 左下三個格仔的方案。考慮左邊和左上兩個方向的地雷數...