题解 | #[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; }