P2327 [SCOI2005]扫雷

Posted caifxh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P2327 [SCOI2005]扫雷相关的知识,希望对你有一定的参考价值。

$b[i]$表示第$i$个行第一列是否有雷,即$b[i]$的值只能为$0$或$1$。

一旦第$i-1$行第一列的摆放情况确定,因为要满足$8$连通的格子里的数字限制,第$i$行第一列的摆放情况也随之确定。

递推式:

\\[ b[i] = a[i-1] - b[i-1] - b[i-2] \\]

$a[i-1]$表示第$i-1$行第二列的数字。

分别令$b[1]=0$和$b[1]=1$即可递推出$b[2 \\sim n]$。

注意点

要判断$b[n-1]+b[n]$是否等于$a[n]$。

const int N=10010;
int a[N],b[N];
int n;
int ans;

bool check()
{
    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;
    }
    if (b[n-1] + b[n] != a[n]) return false;
    
    return true;
}

int main()
{
    cin >> n;
    for (int i = 1; i <= n; i++) cin >> a[i];

    b[1] = 1;  // 左边第一格有雷
    if (check()) ans++;
    b[1] = 0;  // 左边第一格没雷
    if (check()) ans++;

    cout << ans << endl;
    //system("pause");
    return 0;
}

以上是关于P2327 [SCOI2005]扫雷的主要内容,如果未能解决你的问题,请参考以下文章

P2327 [SCOI2005]扫雷

洛谷P2327 [SCOI2005]扫雷 枚举 搜索

P2327 [SCOI2005]扫雷 [2017年5月计划 清北学堂51精英班Day1]

luogu P2327 [SCOI2005]扫雷

P2327 [SCOI2005]扫雷

P2327 [SCOI2005]扫雷