NC20241 [SCOI2005]扫雷MINE
NC20241 [SCOI2005]扫雷MINE
题目
题目描述
相信大家都玩过扫雷的游戏。那是在一个 \(n \times m\) 的矩阵里面有一些雷,要你根据一些信息找出雷来。
万圣节到了 ,“余”人国流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没有雷,那么它里面的数字 表示和它 \(8\)连通的格子里面雷的数目。
现在棋盘是 \(n \times 2\)的,第一列里面某些格子是雷,而第二列没有雷,如下图: 由于第一列的雷可能有多种方案满足第二列的数的限制,你的任务即根据第二列的信息确定第一列雷有多少种摆放方案。
输入描述
第一行为 \(N\),第二行有 \(N\) 个数,依次为第二列的格子中的数。(\(1 ≤ N ≤ 10000\))
输出描述
一个数,即第一列中雷的摆放方案数。
示例1
输入
2
1 1
输出
2
题解
思路
知识点:枚举,递推。
注意到只有两列一列无雷,一列有雷,不妨假设 \(a\) 列无雷,\(b\) 列有雷,\(b[i]\) 为1则 \(i\) 处有雷;\(b[i]\) 为0则 \(i\) 处无雷 。
不妨假设 \(b[1] = 1\) ,就可以通过 \(a[1]\) 确定 \(b[2]\),之后遍历 \([1,n-1]\) 通过 \(a[i] - b[i-1] - b[i]\) 得到 \(b[i+1]\) 。
如果某次 \(b[i+1]<0\) 或者 \(b[i+1] >1\) 或者 \(b[n] + b[n-1] != a[n]\) ,说明这种可能不可行,否则就完成了一种可能。
同理 \(b[1] = 0\) 情况模拟一次,累加可能数即可得到最后答案。
时间复杂度 \(O(n)\)
空间复杂度 \(O(n)\)
代码
#include <bits/stdc++.h>
using namespace std;
int a[100007];
bool b[100007];
bool check(int n){
for(int i = 1;i<=n-1;i++){///最后一个点是确定的不需要再遍历,直接最后判断
int tmp = a[i] - b[i] - b[i-1];///当前a的某点还要的雷
if(tmp<0 || tmp>1) return 0;
else b[i+1] = tmp;
}
if(b[n]+b[n-1] == a[n]) return 1;
else return 0;
}
int main()
{
std::ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n;
cin>>n;
for(int i = 1; i<=n; i++)
{
cin>>a[i];
}
int ans = 0;
b[1] = 0;
if(check(n)) ans++;
b[1] = 1;
if(check(n)) ans++;
cout<<ans<<'\n';
return 0;
}
NC20241 [SCOI2005]扫雷MINE的更多相关文章
- 【递推】BZOJ 1088: [SCOI2005]扫雷Mine
1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2275 Solved: 1328[Submit][St ...
- 【BZOJ】1088: [SCOI2005]扫雷Mine
1088: [SCOI2005]扫雷Mine Description 相 信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,“余”人国流行起了一种简单的 ...
- bzoj 1088: [SCOI2005]扫雷Mine
题目链接 1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2525 Solved: 1495[Submi ...
- 1088: [SCOI2005]扫雷Mine
1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1635 Solved: 979[Submit][Sta ...
- BZOJ 1088: [SCOI2005]扫雷Mine【思维题,神奇的模拟+枚举】
1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 3791 Solved: 2234[Submit][St ...
- [SCOI2005]扫雷Mine
1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2028 Solved: 1187[Submit][St ...
- Bzoj 1088: [SCOI2005]扫雷Mine (DP)
Bzoj 1088: [SCOI2005]扫雷Mine 怒写一发,算不上DP的游戏题 知道了前\(i-1\)项,第\(i\)项会被第二列的第\(i-1\)得知 设\(f[i]\)为第一列的第\(i\) ...
- 【BZOJ1088】[SCOI2005]扫雷Mine 递推
调LCT奔溃,刷水调节一下. #include <iostream> #include <cstdio> #include <cstring> using name ...
- 【BZOJ 1088】 [SCOI2005]扫雷Mine
Description 相信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,“余”人国流行起了一种简单的扫雷游戏,这个游戏规则和扫雷一样,如果某个格子没 ...
随机推荐
- 2021.07.09 K-D树
2021.07.09 K-D树 前置知识 1.二叉搜索树 2.总是很长的替罪羊树 K-D树 建树 K-D树具有二叉搜索树的形态,对于每一个分类标准,小于标准的节点在父节点左边,大于标准的节点在父节点右 ...
- docker入门_docker安装
docker入门_docker安装 ubuntu 安装 curl -sSL https://get.daocloud.io/docker | sh # 官方安装脚本自动安装 systemctl ena ...
- 联想Y7000安装 debian10 wifi 不好使解决方法
联想Y7000安装 debian10 wifi 不好使解决方法 wifi硬件高通QCA9377 把联想驱动加入黑名单 文件路径 /etc/modprobe.d/blacklist.conf 添加内容 ...
- java中int的最值解析
java中int的最大值为十进制的2147483647,也就是java能进行操作的最大数值,超出就会显示不正常.针对以下问题进行讨论. 1.最大值为什么是2147483647? java中int类型占 ...
- 用 GraphScope 像 NetworkX 一样做图分析
NetworkX 是 Python 上最常用的图分析包,GraphScoep 兼容 NetworkX 接口.本文中我们将分享如何用 GraphScope 像 NetworkX 一样在(大)图上进行分析 ...
- 神器 Nginx 的学习手册 ( 建议收藏 )
关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ Nginx 是一个高性能的 HTTP 和反向代理服务器,特点是占用内存少,并发能力强,事实上 ...
- 关于5G技术,这是我见过最通俗易懂的讲解了
公众号关注 「开源Linux」 回复「学习」,有我为您特别筛选的学习资料~ 1 一个简单且神奇的公式 今天的故事,从一个公式开始讲起. 这是一个既简单又神奇的公式.说它简单,是因为它一共只有 3 个字 ...
- 面试官问:浏览器输入 URL 回车之后发生了什么?
一个执着于技术的公众号 前言 这个问题已经是老生常谈了,更是经常被作为面试的压轴题出现,网上也有很多文章,但最近闲的无聊,然后就自己做了一篇笔记,感觉比之前理解更透彻了. 注意:本文的步骤是建立在,请 ...
- Golang 函数 方法 接口的简单介绍
函数 函数是基本的代码块,通常我们会将一个功能封装成一个函数,方便我们调用,同时避免代码臃肿复杂. 函数的基本格式 func TestFunc(a int, b string) (int, strin ...
- BFC 是什么?
BFC 是什么? 本文写于 2020 年 7 月 17 日 总有同学问我:"这个 div 为什么会插出来?为什么 float 的 div 这么不好操作?".这其实就是没有深入理解 ...