题目描述

输入输出格式

输入格式:

第一行为N,第二行有N个数,依次为第二列的格子中的数。(1<= N <= 10000)

输出格式:

一个数,即第一列中雷的摆放方案数。

输入输出样例

输入样例#1:

2
1 1
输出样例#1:
2
算法1:
枚举左边每个位置是否有雷,复杂度O(2^n*n)。
算法2:
我们发现,当前两个位置确定时,后面的位置也就可以推出来了。
于是我们可以只枚举前两位。
复杂度O(n)
 
#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]扫雷的更多相关文章

  1. 洛谷P2327 [SCOI2005]扫雷 [2017年5月计划 清北学堂51精英班Day1]

    P2327 [SCOI2005]扫雷 题目描述 输入输出格式 输入格式: 第一行为N,第二行有N个数,依次为第二列的格子中的数.(1<= N <= 10000) 输出格式: 一个数,即第一 ...

  2. 洛谷P2327 [SCOI2005] 扫雷

    题目描述 输入输出格式 输入格式: 第一行为N,第二行有N个数,依次为第二列的格子中的数.(1<= N <= 10000) 输出格式: 一个数,即第一列中雷的摆放方案数. 输入输出样例 输 ...

  3. BZOJ1088或洛谷2327 [SCOI2005]扫雷

    BZOJ原题链接 洛谷原题链接 很容易发现答案就只有\(0,1,2\)三种答案,而且只要知道第一个格子是否有雷就可以直接顺推下去了. 所以我们跑一次首位有雷,跑一次首位无雷判断是否可行即可. #inc ...

  4. 洛谷 2327 [SCOI2005]扫雷

    输入输出格式 输入格式: 第一行为N,第二行有N个数,依次为第二列的格子中的数.(1<= N <= 10000) 输出格式: 一个数,即第一列中雷的摆放方案数. 输入输出样例 输入样例#1 ...

  5. bzoj1088 P2327 [SCOI2005]扫雷

    P2327 [SCOI2005]扫雷 emmmmm.....这题真可以用状压写 因为每个数字只对3个格子有影响,相当于只有2^3=8种状态,所以可以用状压瞎搞 我们用8个数字代表二进制下的8种状态 0 ...

  6. 洛谷 P1896 [SCOI2005]互不侵犯

    洛谷 P1896 [SCOI2005]互不侵犯 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8 ...

  7. 【题解】Luogu P2327 [SCOI2005]扫雷

    Luogu P2327 [SCOI2005]扫雷 Description 相信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,"余" ...

  8. BZOJ1084或洛谷2331 [SCOI2005]最大子矩阵

    BZOJ原题链接 洛谷原题链接 注意该题的子矩阵可以是空矩阵,即可以不选,答案的下界为\(0\). 设\(f[i][j][k]\)表示前\(i\)行选择了\(j\)个子矩阵,选择的方式为\(k\)时的 ...

  9. 【题解】洛谷P1896 [SCOI2005] 互不侵犯(状压DP)

    洛谷P1896:https://www.luogu.org/problemnew/show/P1896 前言 这是一道状压DP的经典题 原来已经做过了 但是快要NOIP 复习一波 关于一些位运算的知识 ...

随机推荐

  1. Linux PPTP拨号

    试验环境:Linux marsboard 3.4.90 #9 SMP PREEMPT Thu Mar 3 18:28:43 CST 2016 armv7l armv7l armv7l GNU/Linu ...

  2. .NET ViewState对于画面的速度影响

    最近开发一个.NET网站,发现有一个画面的交互特别缓慢,查了很多原因都没查到 最后终于知道,是因为画面的ViewState用的过多,其中有一个ViewState保存的数据相对而言比较大,导致了画面的运 ...

  3. SDUT 2133 数据结构实验之栈三:后缀式求值

    数据结构实验之栈三:后缀式求值 Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 对于一个基于二元运算符的后缀表示式(基本操作数都是 ...

  4. smokeping 报警配置

    摘自: http://blog.csdn.net/achejq/article/details/51556494 smokeping 默认用sendmail 发邮件告警,也可以直接调用外部程序进行报警 ...

  5. ES设置字段搜索权重——Query-Time Boosting

    Query-Time Boosting In Prioritizing Clauses, we explained how you could use the boost parameter at s ...

  6. swoole_table

    Memory Swoole提供了7个内存操作的模块,在多进程编程中可以帮助开发者实现一些特殊的需求. swoole_table 是基于共享内存和锁实现的超高性能,并发数据结构

  7. SSH中的Hibernate

    SSH中的Hibernate 就是DAO连接数据库对数据进行实际操作,做了架构简化,对数据库的操作.

  8. JVM(一)虚拟机内存划分

    Java内存区域 线程私有数据区域:虚拟机栈,本地方法栈,程序计数器 线程共享数据区域:方法区,堆 程序计数器:当前线程所执行的字节码的行号指示器,JVM通过这个字节码解释器改变计数器的值,以选择下一 ...

  9. window下的hosts

    存放在windows系统目录中的\system32\drivers\etc下面. hosts文件是用来记录主机ip地址和主机名的对应关系,建立后就可以用主机名来访问主机,而不必记ip地址了.hosts ...

  10. poj1734Sightseeing trip——无向图求最小环

    题目:http://poj.org/problem?id=1734 无向图求最小环,用floyd: 在每个k点更新f[i][j]之前,以k点作为直接连到i,j组成一个环的点,这样找一下最小环: 注意必 ...