[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++;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?