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(){ ...
随机推荐
- android 44 SQLiteOpenHelper
java package com.sxt.day06_10; import java.util.ArrayList; import com.sxt.day06_10.entity.StudentBea ...
- Linux进程学习(孤儿进程和守护进程)
孤儿进程和守护进程 通过前面的学习我们了解了如何通过fork()函数和vfork()函数来创建一个进程.现在 我们继续深入来学习两个特殊的进程:孤儿进程和守护进程 一.孤儿进程 1.什么是 孤儿进程如 ...
- Qt 学习之路:Qt 简介
Qt 是一个著名的 C++ 应用程序框架.你并不能说它只是一个 GUI 库,因为 Qt 十分庞大,并不仅仅是 GUI 组件.使用 Qt,在一定程度上你获得的是一个“一站式”的解决方案:不再需要研究 S ...
- Qapp使用总结
QApp构建项目总结 1.view module 区别
- Python获取Origin官网视频
程序说明:最近学习origin,看到官网有入门视频(http://www.originlab.com/index.aspx?go=SUPPORT/VideoTutorials),看着挺多的,就用pyt ...
- webservice 发布到外网的时候
在web.config的<system.web></system.web>中间加入如下配置节内容<webServices> <protoco ...
- KineticJS教程(1-2)
1.基本结构 KineticJS首先是要绑定到HTML页面上的一个DOM容器元素上,比如最常用的<div>标签.KineticJS在此容器中创建一个称之为舞台(stage)的结构,这个舞台 ...
- ASP.NET Web API 文件產生器 - 使用 Swagger
转帖:http://kevintsengtw.blogspot.hk/2015/12/aspnet-web-api-swagger.html Swagger 是一套 API 互動文件產生器,使用 HT ...
- reflact中GetMethod方法的使用
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...
- xcode本地运行H5游戏可以吗?
答案是不可以!!! 不可以!!! 不可以!!! 有时候很郁闷的接受一个需求,然后以为自己能力不行,或者是代码写错,还是哪里了解不够,然而并不是啊!!! MD的我想说有些事是行不通的的!! 好了,平静下 ...