[SCOI2005]扫雷MINE

题目描述:
相信大家都玩过扫雷的游戏。那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来。
万圣节到了 ,“余”人国流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没有雷,那么它里面的数字 表示和它8连通的格子里面雷的数目。
现在棋盘是n×2的,第一列里面某些格子是雷,而第二列没有雷,如下图: 由于第一列的雷可能有多种方案满足第二列的数的限制,你的任务即根据第二列的信息确定第一列雷有多少种摆放方案。

分析:如果不去仔细想 就会觉得答案可能会有很多种

但是会发现 如果我们定下第一个位置的b[1] 那么b[2]就会通过a[1]-b[1]算出来(第一二个位置比较特殊) 相应地 b[3]=a[2]-b[1]-b[2] 一系列就能往后推出来

所以答案无非最多两种 只要定下第一个位置有没有雷所有位置就会定下来

code:

#include<bits/stdc++.h>
using namespace std;
#define lowbit(x) x&(-x)
#define ll long long
const int maxn=1e4+5;
int n,ans,b[maxn],a[maxn];
void calc();
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)cin>>a[i];
	b[1]=0;
	calc();
	b[1]=1;
	calc();
	cout<<ans<<endl;
     return 0;
}
void calc(){
	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;
	}
	if(b[n-1]+b[n]!=a[n])return;
	ans++;
}
posted @   wzx_believer  阅读(39)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示