题意:就是挖地雷,给你一个字符串,‘*’代表地雷,‘1’代表在它的周围有1个地雷,‘2’代表在左右都有个地雷,‘?’代表不确定是不是地雷,可以是1,2,*,问你最后有几种方式确定所有的的地雷。

思路:dp[i][0] 代表次位置为0,dp[i][1]代表左边有地雷,dp[i][2]代表右边有地雷,dp[i][3]代表左右都有,dp[i][4]代表此位置为地雷。

 #include <cstdio>
#include <cstring>
#include <algorithm>
#define maxn 1000100
#define ll long long
using namespace std;
const int mod=; char str[maxn];
ll dp[maxn][]; int main()
{
while(scanf("%s",str)!=EOF)
{
int k=strlen(str);
memset(dp,,sizeof(dp));
if(str[]=='') dp[][]=;
else if(str[]=='') dp[][]=;
else if(str[]=='*') dp[][]=;
else if(str[]=='?')
{
dp[][]=dp[][]=dp[][]=;
}
for(int i=; i<k; i++)
{
if(str[i]=='')
{
dp[i][]+=(dp[i-][]+dp[i-][]);
dp[i][]%=mod;
}
else if(str[i]=='')
{
dp[i][]+=dp[i-][];
dp[i][]+=dp[i-][]+dp[i-][];
dp[i][]%=mod;
dp[i][]%=mod;
}
else if(str[i]=='')
{
dp[i][]+=dp[i-][];
dp[i][]%=mod;
}
else if(str[i]=='*')
{
dp[i][]+=dp[i-][]+dp[i-][]+dp[i-][];
dp[i][]%=mod;
}
else if(str[i]=='?')
{
dp[i][]+=dp[i-][]+dp[i-][];
dp[i][]%=mod;
dp[i][]+=dp[i-][];
dp[i][]%=mod;
dp[i][]+=dp[i-][]+dp[i-][];
dp[i][]%=mod;
dp[i][]+=dp[i-][];
dp[i][]%=mod;
dp[i][]+=dp[i-][]+dp[i-][]+dp[i-][];
dp[i][]%=mod;
}
}
ll ans=dp[k-][]+dp[k-][]+dp[k-][];
ans%=mod;
printf("%lld\n",ans);
}
return ;
}

codeforces Minesweeper 1D的更多相关文章

  1. 【codeforces 404D】Minesweeper 1D

    [题目链接]:http://codeforces.com/problemset/problem/404/D [题意] 让你玩一个1维的扫雷游戏; 游戏的描述由数字0..2以及符号*表示; 分别表示这个 ...

  2. CodeForces 404D Minesweeper 1D (DP)

    题意:给定一个序列,*表示雷,1表示它旁边有一个雷,2表示它旁边有两个雷,0表示旁边没有雷,?表示未知,求有多少情况. 析:dp[i][j] 表示第 i 个放 j 状态,有多少种情况,然后很简单的DP ...

  3. Codeforces 404D Minesweeper 1D

    题意: 给定字符串,其中'*'表示地雷,'1'表示左/右边有一个地雷相邻,'2'表示左右两边均有地雷相邻,'0'表示左右均无地雷相邻,'?'表示待定,可填入0,1,2或者地雷,有多少种表示方法使字母串 ...

  4. Educational Codeforces Round 1D 【DFS求联通块】

    http://blog.csdn.net/snowy_smile/article/details/49924965 D. Igor In the Museum time limit per test ...

  5. 近期做的一些DP

    UVa 1625 color length https://blog.csdn.net/Dylan_Frank/article/details/52261424 https://www.cnblogs ...

  6. cf div2 237 D

    D. Minesweeper 1D time limit per test 2 seconds memory limit per test 512 megabytes input standard i ...

  7. Codeforces Round #483 (Div. 2) B. Minesweeper

    题目地址:http://codeforces.com/contest/984/problem/B 题目大意:扫雷游戏,给你一个n*m的地图,如果有炸弹,旁边的八个位置都会+1,问这幅图是不是正确的. ...

  8. codeforces 984B Minesweeper

    题意: 给出一个矩阵,如果一个格子是数字,那么与这个格子相邻的格子中有炸弹的数量必须等于这个格子中的数字: 如果一个格子是空地,那么这个格子的所有相邻的格子中就不能有炸弹. 判断这个矩阵是否合法. 思 ...

  9. Codeforces Global Round 1D(DP,思维)

    #include<bits/stdc++.h>using namespace std;int dp[1000007][7][7];int cnt[1000007];int main(){  ...

随机推荐

  1. android异步任务载入数据界面实现

    android 异步任务的一个后台方法本质是开启一个线程完毕耗时操作,其它onPostExecute方法和onPreExecute方法执行在UI主线程用于更新UI界面.为了提高用户体验常见的异步任务载 ...

  2. RGB的三维模型与渐变色-颜色系列之一

    一.前言 以下与颜色相关的日志记录了俺学习颜色的有关容,限于编写时的水平,难免存在缺点与错误,希望得到朋友.同行和前辈的指教,非常感谢.1.  RGB的三维模型与渐变色-颜色系列之一2.  <颜 ...

  3. [CodeForce]358D Dima and Hares

    有N<3000只宠物要喂,每次只能喂一只,每喂一只宠物,宠物的满足度取决于: 1 紧靠的两个邻居都没喂,a[i] 2 邻居中有一个喂过了,b[i] 3 两个邻居都喂过了,c[i] 把所有宠物喂一 ...

  4. Java读取WEB-INF目录下的properties配置文件

    如何在Java代码中读取WEB-INF目录下的properties配置文件,下文给出了一个解决方案. 我们习惯将一些配置信息写在配置文件中,比如将数据库的配置信息URL.User和Password写在 ...

  5. ARC和非ARC文件混编

    在编程过程中,我们会用到很多各种各样的他人封装的第三方代码,但是有很多第三方都是在非ARC情况下运行的,当你使用第三方编译时出现和下图类似的错误,就说明该第三方是非ARC的,需要进行一些配置. 解决方 ...

  6. (转)基于PHP的cURL快速入门

    1. 原文:基于PHP的cURL快速入门 英文原文:http://net.tutsplus.com/tutorial ... for-mastering-curl/ 原文作者:Burak Guzel ...

  7. 关于get和set访问器以及属性和字段变量的区别问题

    属性是对一个或者多个字段的封装.      类里面为什么要用一个共有的属性来封装其中的字段,也可以这样说用共有属性来封装私有变量,其中的好处应该大家都说的出来,就是为了实现数据的封装和保证了数据的安全 ...

  8. iOS 去除导航栏下的黑线

    Swift: navigationController?.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default) na ...

  9. UIDatePikcer的基本用法

    - (void)viewDidLoad { [super viewDidLoad]; _datePicker = [[UIDatePicker alloc] initWithFrame:CGRectM ...

  10. Java反射学习(java reflect)(一)

    具有能够分析类能力的程序被称为反射,使用反射库可以编写能够动态操纵Java代码的程序. 一.开始 背景:Java运行时系统始终对所有对象维护一个被称为Runtime的类型标识,然后这货save着每个对 ...