博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cf404d
阅读量:2506 次
发布时间:2019-05-11

本文共 2035 字,大约阅读时间需要 6 分钟。

d题一看就是一个dp的题目, 因为常数很大 为1000000, 所以是一维的dp。

然后开始想 发现要做一个有限自动机, 有限自动机我就翻了一下编译原理那本绿书, 很快就将自动机求了出来,然后把状态方程表示出来,就解决了。

有限自动机的图:

源代码:

#include 
#include
#include
#define MOD 1000000007using namespace std;int dp[1111111][6];char s[1111111];int main(){// freopen("data.in", "r", stdin); scanf("%s", s); int n = strlen(s); if(s[0] == '?') { dp[0][1] = dp[0][2] = dp[0][3] = 1; dp[0][4] = dp[0][5] = 0; }else if(s[0] == '1') { dp[0][1] = dp[0][3] = dp[0][4] = dp[0][5] = 0; dp[0][2] = 1; }else if(s[0] == '2') { puts("0"); return 0; }else if(s[0] == '*') { dp[0][1] = dp[0][2] = dp[0][4] = dp[0][5] = 0; dp[0][3] = 1; }else if(s[0] == '0') { dp[0][2] = dp[0][3] = dp[0][4] = dp[0][5] = 0; dp[0][1] = 1; } for(int i = 1; i < n; i++) { if(s[i] == '?') { dp[i][1] = ((dp[i-1][1] + dp[i-1][3])%MOD + dp[i-1][4])%MOD; dp[i][2] = (dp[i-1][1] + dp[i-1][3])%MOD; dp[i][3] = ((dp[i-1][3] + dp[i-1][4])%MOD + dp[i-1][5])%MOD; dp[i][4] = dp[i-1][2]; dp[i][5] = dp[i-1][4]; } else if(s[i] == '0') { dp[i][1] = dp[i-1][1]; dp[i][2] = 0; dp[i][3] = 0; dp[i][4] = 0; dp[i][5] = 0; } else if(s[i] == '1') { dp[i][1] = (dp[i-1][3] + dp[i-1][4])%MOD; dp[i][2] = dp[i-1][1]; dp[i][3] = 0; dp[i][4] = 0; dp[i][5] = 0; } else if(s[i] == '2') { dp[i][1] = 0; dp[i][2] = dp[i-1][3]; dp[i][3] = 0; dp[i][4] = 0; dp[i][5] = dp[i-1][4]; } else if(s[i] == '*') { dp[i][1] = 0; dp[i][2] = 0; dp[i][3] = ((dp[i-1][3] + dp[i-1][4])%MOD + dp[i-1][5])%MOD; dp[i][4] = dp[i-1][2]; dp[i][5] = 0; } } printf("%d\n", ((dp[n-1][1] + dp[n-1][3])%MOD + dp[n-1][4])%MOD); return 0;}

你可能感兴趣的文章
asp.net core结合Gitlab-CI实现自动化部署
查看>>
RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.7 版本发布
查看>>
EasyNVR H5无插件摄像机直播解决方案前端解析之:关于直播页面和视频列表页面切换的问题...
查看>>
django搭建一个小型的服务器运维网站-拿来即用的bootstrap模板
查看>>
redis事务
查看>>
Java_基础语法之dowhile语句
查看>>
HDU 2175 汉诺塔IX
查看>>
PAT 甲级 1021 Deepest Root
查看>>
查找代码错误.java
查看>>
vc获取特殊路径(SpecialFolder)
查看>>
单例模式
查看>>
int(3)和int(11)区别
查看>>
201521123061 《Java程序设计》第十一周学习总结
查看>>
代码小思考
查看>>
Unity中的销毁方法
查看>>
ceph删除pool提示(you must first set the mon_allow_pool_delete config option to true)解决办法...
查看>>
2016-7-15(1)使用gulp构建一个项目
查看>>
CSS 设计指南(第3版) 初读笔记
查看>>
markdown学习/mou
查看>>
CentOS 搭建 LAMP服务器
查看>>