题解 | #[SCOI2005]扫雷MINE#
[SCOI2005]扫雷MINE
https://ac.nowcoder.com/acm/problem/20241
题意 有个2*n的地图,规则和扫雷一样,第二列没雷,给定第二列的数,求有几种情况可以满足第二列
思路 后面有没有雷可以根据第一个数推出来,也是唯一的,所以最多只有两种可能
枚举即可,因为最后一个数也是只有两个地方相关,所以要特判
#include<iostream>
using namespace std;
int a[10010],b[10010];
int main()
{
int n,ans=0;
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
if(a[1]>=1)
{
b[1]=1;
for(int i=2;i<=n;i++)
{
b[i]=a[i-1]-b[i-1]-b[i-2];
if(b[i]>1||b[i]<0)
{
ans--;
break;
}
if(i==n&&a[n]!=(b[n]+b[n-1]))
ans--;
}
ans++;
}
b[1]=0;
for(int i=2;i<=n;i++)
{
b[i]=a[i-1]-b[i-1]-b[i-2];
if(b[i]>1||b[i]<0)
{
ans--;
break;
}
if(i==n&&a[n]!=(b[n]+b[n-1]))
ans--;
}
ans++;
cout<<ans<<endl;
}

