洛谷 P2327 [SCOI2005]扫雷
P2327 [SCOI2005]扫雷
题目描述

输入输出格式
输入格式:
第一行为N,第二行有N个数,依次为第二列的格子中的数。(1<= N <= 10000)
输出格式:
一个数,即第一列中雷的摆放方案数。
输入输出样例
2
1 1
2
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int n,num[],a[];
bool mine[],flag;
int main(){
scanf("%d",&n);
for(int i=;i<=n;i++)scanf("%d",&num[i]);
if(num[]==){printf("");return ;}
if(num[]==){
mine[]=;mine[]=;
a[]=;
for(int i=;i<=n-;i++){
for(int j=i-;j<=i+;j++)a[i]+=mine[j];
if(a[i]==num[i])mine[i+]=;
else if(a[i]==num[i]-)a[i]++,mine[i+]=;
else {flag=;break;}
}
if(flag==){printf("");return ;}
a[n]+=mine[n-];a[n]+=mine[n];
if(a[n]==num[n]){printf("");return ;}
else{printf("");return ;}
}
if(num[]==){
int ans=;
mine[]=;mine[]=;
a[]=;
for(int i=;i<=n-;i++){
for(int j=i-;j<=i+;j++)a[i]+=mine[j];
if(a[i]==num[i])mine[i+]=;
else if(a[i]==num[i]-)a[i]++,mine[i+]=;
else {flag=;break;}
}
if(flag!=){a[n]+=mine[n-];a[n]+=mine[n];if(a[n]==num[n])ans++;} memset(mine,,sizeof(mine));
memset(a,,sizeof(a));
mine[]=;mine[]=;
a[]=;
for(int i=;i<=n-;i++){
for(int j=i-;j<=i+;j++)a[i]+=mine[j];
if(a[i]==num[i])mine[i+]=;
else if(a[i]==num[i]-)a[i]++,mine[i+]=;
else {flag=;break;}
}
if(flag!=){a[n]+=mine[n-];a[n]+=mine[n];if(a[n]==num[n])ans++;}
printf("%d",ans);return ;
}
if(num[]==){
mine[]=;mine[]=;
a[]=;
for(int i=;i<=n-;i++){
for(int j=i-;j<=i+;j++)a[i]+=mine[j];
if(a[i]==num[i])mine[i+]=;
else if(a[i]==num[i]-)a[i]++,mine[i+]=;
else {flag=;break;}
}
if(flag==){printf("");return ;}
a[n]+=mine[n-];a[n]+=mine[n];
if(a[n]==num[n]){printf("");return ;}
else{printf("");return ;}
}
}
洛谷 P2327 [SCOI2005]扫雷的更多相关文章
- 洛谷P2327 [SCOI2005]扫雷 [2017年5月计划 清北学堂51精英班Day1]
P2327 [SCOI2005]扫雷 题目描述 输入输出格式 输入格式: 第一行为N,第二行有N个数,依次为第二列的格子中的数.(1<= N <= 10000) 输出格式: 一个数,即第一 ...
- 洛谷P2327 [SCOI2005] 扫雷
题目描述 输入输出格式 输入格式: 第一行为N,第二行有N个数,依次为第二列的格子中的数.(1<= N <= 10000) 输出格式: 一个数,即第一列中雷的摆放方案数. 输入输出样例 输 ...
- BZOJ1088或洛谷2327 [SCOI2005]扫雷
BZOJ原题链接 洛谷原题链接 很容易发现答案就只有\(0,1,2\)三种答案,而且只要知道第一个格子是否有雷就可以直接顺推下去了. 所以我们跑一次首位有雷,跑一次首位无雷判断是否可行即可. #inc ...
- 洛谷 2327 [SCOI2005]扫雷
输入输出格式 输入格式: 第一行为N,第二行有N个数,依次为第二列的格子中的数.(1<= N <= 10000) 输出格式: 一个数,即第一列中雷的摆放方案数. 输入输出样例 输入样例#1 ...
- bzoj1088 P2327 [SCOI2005]扫雷
P2327 [SCOI2005]扫雷 emmmmm.....这题真可以用状压写 因为每个数字只对3个格子有影响,相当于只有2^3=8种状态,所以可以用状压瞎搞 我们用8个数字代表二进制下的8种状态 0 ...
- 洛谷 P1896 [SCOI2005]互不侵犯
洛谷 P1896 [SCOI2005]互不侵犯 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8 ...
- 【题解】Luogu P2327 [SCOI2005]扫雷
Luogu P2327 [SCOI2005]扫雷 Description 相信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,"余" ...
- BZOJ1084或洛谷2331 [SCOI2005]最大子矩阵
BZOJ原题链接 洛谷原题链接 注意该题的子矩阵可以是空矩阵,即可以不选,答案的下界为\(0\). 设\(f[i][j][k]\)表示前\(i\)行选择了\(j\)个子矩阵,选择的方式为\(k\)时的 ...
- 【题解】洛谷P1896 [SCOI2005] 互不侵犯(状压DP)
洛谷P1896:https://www.luogu.org/problemnew/show/P1896 前言 这是一道状压DP的经典题 原来已经做过了 但是快要NOIP 复习一波 关于一些位运算的知识 ...
随机推荐
- node+express上传图片到七牛
本人微信公众号:前端修炼之路,欢迎关注 最近做项目的时候有一个上传图片的需求,由于没有后端的配合,所以决定自己来搭个服务器,实现上传图片功能.以后如果需要修改成java或者php为后端,直接使用即可, ...
- Android Studio第一次启动失败的解决办法
Android Studio Android 开发环境 由于GFW的问题,安装后第一次启动会在显示Fetching android sdk component information对话框后,提示错误 ...
- 大数据之路- Hadoop环境搭建(Linux)
前期部署 1.JDK 2.上传HADOOP安装包 2.1官网:http://hadoop.apache.org/ 2.2下载hadoop-2.6.1的这个tar.gz文件,官网: https://ar ...
- matlab之sum()函数
sum(A,1):对矩阵A按照列求和: sum(A,2):对矩阵A按照行求和: 默认情况下,是按照列求和的. 举例: A=[1 2 3;1 2 3] sum(A,1)的结果: ans = 2 4 6 ...
- html5 手写的canvas实现
试用支持canvas的浏览器,无JS依赖,运用新的HTML5技术DrawBoard.renderDrawer('myHandWrite',{ penColor:'#FF0000', penWidt ...
- 使用gdb调试c/c++代码
转自 http://blog.csdn.net/haoel/article/details/2879 GDB概述———— GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具.或许,各位比较 ...
- 分享知识-快乐自己:全面解析 java注解实战指南
请你在看这篇文章时,不要感到枯燥,从头到尾一行行看,代码一行行读,你一定会有所收获的. 问: 为什么学习注解? 学习注解有什么好处? 学完能做什么? 答: 1):能够读懂别人的代码,特别是框架相关的代 ...
- 机器学习(九)—逻辑回归与SVM区别
逻辑回归详细推导:http://lib.csdn.net/article/machinelearning/35119 面试常见问题:https://www.cnblogs.com/ModifyRong ...
- NOIP 2016【蚯蚓】
好吧,我承认我是个智障-- 这道题一眼看上去就是个堆,然而实际上有单调性. 注意到,如果 \(q = 0\) 的话,将蚯蚓的左右两边分开丢进两个队列中,则两个队列都是单调不增的,因为每次取出的蚯蚓长度 ...
- linux 网络编程getdomainname与gethostname函数
getdomainname与gethostname函数 1 gethostname() : 返回本地主机的标准主机名. 原型如下: #include <unistd.h> int geth ...