1. 程式人生 > >[BZOJ1088/Luogu2327][SCOI2005]掃雷Mine

[BZOJ1088/Luogu2327][SCOI2005]掃雷Mine

amp 數學題 n) scoi2005 時間 php zoj bzoj return

題目鏈接:

BZOJ1088

Luogu2327

第一眼看去:\(DP\)?數學題?

手玩幾組小數據,發現第一列只要有一個確定,那麽其他的也隨之確定。

所以說,令第一個格子分別為有/無雷,往下遞推一遍,判斷是否有解即可。

時間復雜度 \(O(n)\)

#include <cstdio>
#include <algorithm>

int n,a[10005],b[10005];

bool Check(int v)
{
    b[1]=v;
    for(int i=2;i<=n;++i)
    {
        b[i]=a[i-1]-b[i-1]-b[i-2];//求出雷數
        if(b[i]<0||b[i]>1)return false;//不符合要求
    }
    return a[n]==b[n-1]+b[n];
}

int main()
{
    scanf("%d",&n);
    for(int i=1;i<=n;++i)scanf("%d",&a[i]);
    printf("%d\n",Check(0)+Check(1));
    return 0;
}

[BZOJ1088/Luogu2327][SCOI2005]掃雷Mine