ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

[SCOI2005]扫雷MINE

2022-07-11 11:33:27  阅读:145  来源: 互联网

标签:maxn int 第二列 MINE 扫雷 第一列 SCOI2005 calc


题目描述:
相信大家都玩过扫雷的游戏。那是在一个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++;
}

标签:maxn,int,第二列,MINE,扫雷,第一列,SCOI2005,calc
来源: https://www.cnblogs.com/wzxbeliever/p/16465819.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有