/*
我是一个习惯后悔,但是没办法忍受内疚感的二货== 这题是个无脑dp,但是比赛大概20min没出...其实最后5min我好好想想简单化边界条件,可以出的。
题意:
给你一个长度为1e6的由?*01四种字符组成的字符串,类似扫雷,?代表当前不确定,0代表当前无雷,并且
两边无雷,1代表当前五雷且两边有一个雷,2同样的,问当所有格子已知以后一共有多少种可能的局面。
思路:
首先想到的是,这个问题无后效性,而当前位置的合法方式只与它之前的两位有关。
所以dp的思路也是显而易见的,即dp[i][j]代表前i个最后两位的情况是j的时候的方案数。
其实最后两位的一共16种组合合法的方式只有9种。 注意:
也是我比赛被坑的地方,处理边界条件。
首先对于最后的两位是有要求的,例如最后一位不可能是2...(还有其他的情况),答案即把最后两位合法的情况加起来。
然后dp一开始的第一位该如何办...
我比赛的时候想暴力写前两位的情况,然后dp后来发现这么写代码量...然后崩了....
然后刚想了想,其实我枚举第一位所有可能的情况就好。
因为合法的9种情况中有许多是等价的,我只需在其中选择一项使得dp[1][i]=1即可 ...
然后WA6...因为最后累加答案的时候忘记取模了...傻逼错误简直了== */ #include<bits/stdc++.h>
#define N 1000050
using namespace std;
long long dp[N][];
long long mod=1e9+;
char jilu[N];
inline void z(int a,int b,int i){
dp[i][a]+=dp[i-][b];
dp[i][a]%=mod;
}
long long ans=;
void ggg(int len)
{
for(int i=;i<=len;i++){
if(jilu[i]=='?'){
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
}
else if(jilu[i]==''){
z(,,i);
z(,,i);
z(,,i);
}
else if(jilu[i]==''){
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
}
else if(jilu[i]==''){
z(,,i);
z(,,i);
z(,,i);
}
else{
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
z(,,i);
}
}
ans+=dp[len][];
ans%=mod;
ans+=dp[len][];
ans%=mod;
ans+=dp[len][];
ans%=mod;
ans+=dp[len][];
ans%=mod;
ans+=dp[len][];
ans%=mod;
ans+=dp[len][];
ans%=mod;
}
int main()
{
scanf("%s",jilu+);
int len=strlen(jilu+);
if(len<){
if(jilu[]==''||jilu[]==''){
cout << <<endl;
}
else if(jilu[]=='?'){
cout << <<endl;
}
else{
cout << <<endl;
}
return ;
}
switch (jilu[]){
case '?':
dp[][]=;
dp[][]=;
dp[][]=;
break;
case '':
dp[][]=;
break;
case '':
dp[][]=;
break;
case '*':
dp[][]=;
}
ggg(len);
cout << ans <<endl;
}

Codeforces 404D [DP]的更多相关文章

  1. CodeForces 404D Minesweeper 1D (DP)

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

  2. codeforces的dp专题

    1.(467C)http://codeforces.com/problemset/problem/467/C 题意:有一个长为n的序列,选取k个长度为m的子序列(子序列中不能有位置重复),求所取的k个 ...

  3. Two Melodies CodeForces - 813D (DP,技巧)

    https://codeforces.com/problemset/problem/813/D dp[i][j] = 一条链以i结尾, 另一条链以j结尾的最大值 关键要保证转移时两条链不能相交 #in ...

  4. Consecutive Subsequence CodeForces - 977F(dp)

    Consecutive Subsequence CodeForces - 977F 题目大意:输出一序列中的最大的连续数列的长度和与其对应的下标(连续是指 7 8 9这样的数列) 解题思路: 状态:把 ...

  5. 【codeforces 404D】Minesweeper 1D

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

  6. Codeforces 721C [dp][拓扑排序]

    /* 题意:给你一个有向无环图.给一个限定t. 问从1点到n点,在不超过t的情况下,最多可以拜访几个点. 保证至少有一条路时限不超过t. 思路: 1.由无后向性我们可以知道(取决于该图是一个DAG), ...

  7. CodeForces 607C (DP) Hard problem

    题目:这里 题意:给定n个字符串,每个字符串可以进行一项操作,就是将这个字符串交换,就是该字符串的第一个和最后一个交换,第二个和倒数第二个交换,以此类推,当然可以选择对于 该字符串进行或不进行这项操作 ...

  8. Codeforces 611d [DP][字符串]

    /* 题意:给一个长度不超过5000的字符串,每个字符都是0到9的数字. 要求将整个字符串划分成严格递增的几个数字,并且不允许前导零. 思路: 1.很开心得发现,当我在前i个区间以后再加一个区间的时候 ...

  9. Codeforces 119C DP

    题意: 有n天,m门课和常数k; 每天上一门课,每门课程有两个属性,最少作业量a,最多作业量b,和难度c. 1<=a<=b<=1e16 c<=100 1<=n<=m ...

随机推荐

  1. disruptor - Concurrent Programming Framework 并发编程框架

    disruptor发布了Java的2.0版本(.Net版本见这里),disruptor是一个高性能的异步处理框架,或者可以认为是最快的消息框架(轻量的JMS),也可以认为是一个观察者模式实现,或者事件 ...

  2. Java OCR 图像智能字符识别技术,可识别中文

    http://www.open-open.com/lib/view/open1363156299203.html

  3. 彻底解决ASP.NET MVC 3 404错误码返回302的问题

    转自:http://blog.csdn.net/mycloudke/article/details/9746333 404状态码:,意味着当在页面上显示用户点击不存在,提高用户体验度,搜索引擎会放弃这 ...

  4. Struts2 - Rest(1)

    Struts2提供了一个restful的插件:struts2-rest-plugin-2.3.16.1.jar 这个插件可以把Struts2当做restful来使用,不过它的rest功能目前来说有点“ ...

  5. 【性能测试】性能测试总结<四>

    性能测试常见指标        性能测试说白了就是通过工具模拟多个用户对被测系统进行访问.然后查看系统对于多个用户发来请求的处理能力. 左边的两个小人表示两个用户,向右边服务器发送请求,然后得到服务器 ...

  6. == Got TLE on OJ? Here is the solution! ==

    As a solo warrior in OJ, I spent about nearly 50% of my time on tackling TLE - that is innumerous ho ...

  7. 【转】Linux 的启动流程

    半年前,我写了<计算机是如何启动的?>,探讨BIOS和主引导记录的作用. 那篇文章不涉及操作系统,只与主板的板载程序有关.今天,我想接着往下写,探讨操作系统接管硬件以后发生的事情,也就是操 ...

  8. 读书笔记:应用随机过程:概率模型导论:Aloha协议问题

    例4.16,Aloha协议:就本书例题所涉及的部分来说,几乎等同于CSMA.这个例题重写如下: 考察一个包含多个设备的通信系统,其中在每个时间段发送信息的设备个数是独立同分布的.......每个设备将 ...

  9. Linux Modules Introduction

    Modules are small kernel extensions ,that may be loaded and unloaded at will● Can implement drivers, ...

  10. MVC之Razor语法

    Razor是MVC3中才有的新的视图引擎.我们知道,在ASP.NET中,ASPX的视图引擎依靠<%和%>来调用C#指令.而MVC3以后有了一套新的使用@标记的Razor语法,使用起来更灵活 ...