CodeForces

来源:互联网 发布:sql经典语句 编辑:程序博客网 时间:2024/05/22 13:27

明显自己的思维太狭隘了,方向是没有错,想着会有炸弹在1前和炸弹在1后,居然自己就没有办法处理了,其实很简单啊,,就把这两种情况分出来就行了啊- - 真是太蠢了

dp[maxn][5],当前的状态由之前5种状态决定,分别是    0、 炸弹+1,没有炸弹+1,2,炸弹。

然后需要注意的是当前的1放下去可能会形成 炸弹+1 和没有炸弹+1,所以不要搞混。

然后就是这道题需要mod,WA了半天,最后发现数据太大了求和再mod会爆,得分开来mod。

#include <iostream>#include <iomanip>#include <cstdio>#include <cstring>#include <vector>#include <queue>#include <algorithm>#include <set>#include <stack>#include <cmath>#define fuck() (cout << "--------------------------------" << endl)#define mod 1000000007#define INF 0x3f3f3f3fusing namespace std;const int maxn = 1000000 + 5;int dp[maxn][5];//int main(){    string x;    while(cin >> x)    {        memset(dp,0,sizeof(dp));        unsigned long long  len = x.size();        if(x[0] == '0') dp[0][0] = 1;  //当前为0的状态        else if(x[0] == '1' ) dp[0][1] = 1; //当前为1,1之前不是炸弹的状态        else if(x[0] == '*' ) dp[0][4] = 1; //当前为炸弹的状态        else if(x[0] == '2')        {            printf("0\n");            continue;        }        else if(x[0] == '?')            dp[0][0] = dp[0][1] = dp[0][4] = 1;        // dp[0][2] 当前为1 之前是炸弹的状态        // dp[0][3] 当前为2        for(int i=1; i<len; i++)        {            if(x[i] == '0') dp[i][0] = (dp[i-1][0] + dp[i-1][2]) % mod;            else if(x[i] == '1')            {                dp[i][1] = (dp[i-1][0] + dp[i-1][2]) % mod;                dp[i][2] = dp[i-1][4] % mod;            }            else if(x[i] == '2') dp[i][3] = dp[i-1][4] % mod;            else if(x[i] == '*') dp[i][4] = ((dp[i-1][1] + dp[i-1][3]) % mod + dp[i-1][4]) % mod;            else if(x[i] == '?')            {                dp[i][0] = (dp[i-1][0] + dp[i-1][2]) % mod;                dp[i][1] = (dp[i-1][0] + dp[i-1][2]) % mod;                dp[i][2] = dp[i-1][4] % mod;                dp[i][3] = dp[i-1][4] % mod;                dp[i][4] = ((dp[i-1][1] + dp[i-1][3]) % mod + dp[i-1][4]) % mod;            }        }        long long  ans =( (dp[len-1][0] +  dp[len-1][2]) % mod + dp[len-1][4]) % mod;        printf("%lld\n",ans);    }}



原创粉丝点击