欢迎访问~原文出处——博客园-zhouzhendong

去博客园看该题解


题目传送门 - BZOJ1088


题意概括

  扫雷。只有2行。第2行没有雷,第一行有雷。告诉你第二行显示的数组,问有几种摆放方式。


题解

  动态规划。

  用dp[i][0][0]表示当前位置为0,前一位置为0的方案总数,

  用dp[i][0][1]表示当前位置为1,前一位置为0的方案总数,

  用dp[i][1][0]表示当前位置为0,前一位置为1的方案总数,

  用dp[i][1][1]表示当前位置为1,前一位置为1的方案总数,

  然后分各种情况转移即可。

  网上又说直接模拟的——代码比我短好多!都是大佬!Orz


代码

#include <cstring>
#include <algorithm>
#include <cstdlib>
#include <cmath>
#include <cstdio>
using namespace std;
typedef long long LL;
const int N=+;
int n,a[N];
LL dp[N][][];
int main(){
scanf("%d",&n);
for (int i=;i<=n;i++)
scanf("%d",&a[i]);
for (int i=;i<=n;i++)
if (a[i]>)
{printf("");return ;}
if (a[]>||a[n]>)
{printf("");return ;}
memset(dp,,sizeof dp);
if (a[]==)
dp[][][]=;
else if (a[]==)
dp[][][]=dp[][][]=;
else if (a[]==)
dp[][][]=;
for (int i=;i<=n;i++){
int v=a[i-];
LL p00=dp[i-][][],p01=dp[i-][][],p10=dp[i-][][],p11=dp[i-][][];
LL &n00=dp[i][][],&n01=dp[i][][],&n10=dp[i][][],&n11=dp[i][][];
if (a[i]==){
if (v>)
{printf("");return ;}
if (v==)
n00+=p10;
else if (v==)
n00+=p00;
}
else if (a[i]==){
if (v==)
{printf("");return ;}
if (v==)
n10+=p11,n01+=p10;
else if (v==)
n10+=p01,n01+=p00,n00+=p10;
else if (v==)
n00+=p00;
}
else if (a[i]==){
if (v==)
{printf("");return ;}
if (v==)
n01+=p00,n10+=p01;
else if (v==)
n11+=p01,n10+=p11,n01+=p10;
else if (v==)
n11+=p11;
}
else if (a[i]==){
if (v<)
{printf("");return ;}
if (v==)
n11+=p01;
else
n11+=p11;
}
}
LL ans;
if (a[n]==)
ans=dp[n][][];
else if (a[n]==)
ans=dp[n][][]+dp[n][][];
else
ans=dp[n][][];
printf("%lld",ans);
return ;
}

BZOJ1088 [SCOI2005]扫雷Mine 动态规划的更多相关文章

  1. 【题解】 bzoj1088: [SCOI2005]扫雷Mine (神奇的做法)

    bzoj1088,懒得复制,戳我戳我 Solution: 其实这个有个结论,答案只会有\(0\),\(1\),\(2\)三种(我真的是个弱鸡,这个都想不到) 然后我们假设第一个就可以推出所有的状态(显 ...

  2. BZOJ1088: [SCOI2005]扫雷Mine

    这道题A的好莫名其妙啊2333 传送门 状压DP,枚举上一个雷的分布情况(1<<3)-1,然后和当前的分布相结合,推出下一状态. //BZOJ 1088 //by Cydiater //2 ...

  3. 【暴力】【推导】bzoj1088 [SCOI2005]扫雷Mine

    考虑右侧的一个格子是否放雷,只可能对其左侧的三个格子造成影响. 也就是说,若左侧一个格子旁的两个格子已经放了雷,对第三个格子也就唯一确定了. 因此只枚举前两个格子是否放雷,剩下的暴力判断是否合法即可. ...

  4. [BZOJ1088][SCOI2005]扫雷Mine DP

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1088 记录下每一个格子对应左边格子放的雷的情况,然后dp转移就好了. #include&l ...

  5. 【递推】BZOJ 1088: [SCOI2005]扫雷Mine

    1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2275  Solved: 1328[Submit][St ...

  6. 【BZOJ】1088: [SCOI2005]扫雷Mine

    1088: [SCOI2005]扫雷Mine Description 相 信大家都玩过扫雷的游戏.那是在一个n*m的矩阵里面有一些雷,要你根据一些信息找出雷来.万圣节到了,“余”人国流行起了一种简单的 ...

  7. bzoj 1088: [SCOI2005]扫雷Mine

    题目链接 1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2525  Solved: 1495[Submi ...

  8. 1088: [SCOI2005]扫雷Mine

    1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1635  Solved: 979[Submit][Sta ...

  9. BZOJ 1088: [SCOI2005]扫雷Mine【思维题,神奇的模拟+枚举】

    1088: [SCOI2005]扫雷Mine Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 3791  Solved: 2234[Submit][St ...

随机推荐

  1. POJ3177 Redundant Paths【双连通分量】

    题意: 有F个牧场,1<=F<=5000,现在一个牧群经常需要从一个牧场迁移到另一个牧场.奶牛们已经厌烦老是走同一条路,所以有必要再新修几条路,这样它们从一个牧场迁移到另一个牧场时总是可以 ...

  2. POJ1287 Networking【最小生成树】

    题意: 给出n个节点,再有m条边,这m条边代表从a节点到b节点电缆的长度,现在要你将所有节点都连起来,并且使长度最小 思路: 这是个标准的最小生成树的问题,用prim的时候需要注意的是他有重边,取边最 ...

  3. 计算正多边形的面积 Gym - 101840G

    http://codeforces.com/gym/101840/attachments 题目大意:输入n,r,k .n代表往外扩张几次,r代表圆的内接圆半径,k代表多边形的边长.问你每次扩张多边形和 ...

  4. Win10安装TensorFlow1.9-GPU版本

    前言 前段时间更新自己电脑上的tf1.4到1.9,没想到踩了这么多坑...特意记录下来希望可以帮到大家 删除旧版本 如果你电脑上没有安装旧版本的tf,就可以忽略这一步.我是因为想要升级到最新版本,所以 ...

  5. xcode查找当前程序的沙盒

    随意在程序中添加一个断点,当程序命中断点的时候,控制台中会出现一个"lldb" 此时在"lldb"后面添加上  po NSHomeDirectory()  回车 ...

  6. 【逆向工具】IDA使用1-VS2015版本debug查找Main函数,加载符号文件

    IDA 常见操作 空格,切换反汇编视图 选择CALL或是跳转 进入函数内部或是跳转处 返回键 ESC daq.exe 分析32位程序 ,生成的IDA数据库文件是 .idb Idap64.exe 分析6 ...

  7. Potential Pythonic Pitfalls

    Potential Pythonic Pitfalls Monday, 11 May 2015 Table of Contents Not Knowing the Python Version Obs ...

  8. ImageNet Classification with Deep Convolutional Neural Networks(译文)转载

    ImageNet Classification with Deep Convolutional Neural Networks Alex Krizhevsky, Ilya Sutskever, Geo ...

  9. AWTK(Toolkit AnyWhere): 为嵌入式、手机和桌面开发的通用GUI【转】

    转自:https://blog.csdn.net/absurd/article/details/80958279 AWTK = Toolkit AnyWhere AWTK是吸取了FTK和CanTK的精 ...

  10. python位运算之计算中位数

    # -*- coding: utf-8 -*- # @Time : 2018/11/23 10:49 PM # @Author : cxa # @File : 1.py # @Software: Py ...