codeforces Minesweeper 1D
题意:就是挖地雷,给你一个字符串,‘*’代表地雷,‘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的更多相关文章
- 【codeforces 404D】Minesweeper 1D
[题目链接]:http://codeforces.com/problemset/problem/404/D [题意] 让你玩一个1维的扫雷游戏; 游戏的描述由数字0..2以及符号*表示; 分别表示这个 ...
- CodeForces 404D Minesweeper 1D (DP)
题意:给定一个序列,*表示雷,1表示它旁边有一个雷,2表示它旁边有两个雷,0表示旁边没有雷,?表示未知,求有多少情况. 析:dp[i][j] 表示第 i 个放 j 状态,有多少种情况,然后很简单的DP ...
- Codeforces 404D Minesweeper 1D
题意: 给定字符串,其中'*'表示地雷,'1'表示左/右边有一个地雷相邻,'2'表示左右两边均有地雷相邻,'0'表示左右均无地雷相邻,'?'表示待定,可填入0,1,2或者地雷,有多少种表示方法使字母串 ...
- Educational Codeforces Round 1D 【DFS求联通块】
http://blog.csdn.net/snowy_smile/article/details/49924965 D. Igor In the Museum time limit per test ...
- 近期做的一些DP
UVa 1625 color length https://blog.csdn.net/Dylan_Frank/article/details/52261424 https://www.cnblogs ...
- cf div2 237 D
D. Minesweeper 1D time limit per test 2 seconds memory limit per test 512 megabytes input standard i ...
- Codeforces Round #483 (Div. 2) B. Minesweeper
题目地址:http://codeforces.com/contest/984/problem/B 题目大意:扫雷游戏,给你一个n*m的地图,如果有炸弹,旁边的八个位置都会+1,问这幅图是不是正确的. ...
- codeforces 984B Minesweeper
题意: 给出一个矩阵,如果一个格子是数字,那么与这个格子相邻的格子中有炸弹的数量必须等于这个格子中的数字: 如果一个格子是空地,那么这个格子的所有相邻的格子中就不能有炸弹. 判断这个矩阵是否合法. 思 ...
- Codeforces Global Round 1D(DP,思维)
#include<bits/stdc++.h>using namespace std;int dp[1000007][7][7];int cnt[1000007];int main(){ ...
随机推荐
- HDU 2069 Coin Change
Coin Change Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total S ...
- [RxJS] Filtering operators: take, first, skip
There are more operators in the filtering category besides filter(). This lesson will teach how take ...
- javascript实现无缝上下滚动(转)
js实现上下无缝滚动的原理是这样的: 1.首先给容器设定高度或宽度,然后overflow:hidden: 2.容器高度设定后,内容超出则被隐藏.3.改变容器的scrollTop(上下滚动)属性的值,让 ...
- SpringMVC + Spring 3.2.14 + Hibernate 3.6.10 集成详解
注:此文档只说明简单的框架集成,各个框架的高级特性未涉及,刚刚接触框架的新人可能需要参考其他资料. PS:本次练习所用jar包都能在此下载到:http://pan.baidu.com/s/1sjmgd ...
- NC V6 nchome文件目录及其作用介绍
NC V6发布一段时间了,各个NC6.0 nchome文件夹下各个子文件夹内容和作用 ant:存放Apache Ant,用来执行EJB的构建. bin: 存放nc部署和系统监控等命令.configsy ...
- Use StringBuilder instead of String as possible as you can.
If you are care a littile about the time your algorithm cost,you should notice that,you my use Strin ...
- session marked for kill处理oracle中杀不掉的锁
ora-00031:session marked for kill处理oracle中杀不掉的锁 一些ORACLE中的进程被杀掉后,状态被置为"killed",但是锁定的资源很长 ...
- 【读书笔记】管道和FIFO
管道 提供一个单路(单向)数据流,可以为两个不同进程提供进程间的通信手段 #include <unistd.h> ]); 返回两个文件描述符,fd[0](读) 和 fd[1](写) 管道间 ...
- 百度ios 开发面试题
百度移动云可穿戴部门的面试经历,面试官都非常热情友好,一上来到弄的我挺不好意思的.下面记录一下自己的面试过程,因为我真的没啥面试经验,需要总结下. 1面 Objective C runtime lib ...
- 判断奇数,java陷阱
/** 判断是否为奇数 @author husky / public class IsOdd { public static void main(String[] args) { int demo1 ...