传送门
题解可以参见zjjzjjzjj神仙的,写的很清楚。
代码:

#include<bits/stdc++.h>
#define ri register int
using namespace std;
typedef long long ll;
const int mod=1e9+7;
inline int add(const int&a,const int&b){return a+b>=mod?a+b-mod:a+b;}
inline int dec(const int&a,const int&b){return a>=b?a-b:a-b+mod;}
inline int mul(const int&a,const int&b){return (ll)a*b%mod;}
inline void update(int&a,const int&b){a=add(a,b);}
inline void modify(int&a,const int&b){a=dec(a,b);}
int ans,f[2][1<<12|5][13][13],n,m,c,q,a[13],fail[2][13],trans[2][13][3],tmp;
char s[13];
inline int idx(const char&x){return x=='W'?0:(x=='B'?1:2);}
int main(){scanf("%d%d%d%d",&n,&m,&c,&q);while(q--){for(ri tt=0;tt<2;++tt){scanf("%s",s+1);for(ri i=1;i<=c;++i)a[i]=idx(s[i]);for(ri i=1,j=0;i<=c;++i){while(j&&s[i+1]!=s[j+1])j=fail[tt][j];s[i+1]==s[j+1]?fail[tt][i+1]=++j:fail[tt][i+1]=0;}for(ri k,i=0;i<c;++i)for(ri j=0;j<3;++j){for(k=i;k&&a[k+1]!=j;k=fail[tt][k]);trans[tt][i][j]=a[k+1]==j?k+1:0;}}memset(f[0],0,sizeof(f[0]));ans=f[0][0][0][0]=1,tmp=1;for(ri i=1;i<=n;++i){memset(f[tmp],0,sizeof(f[tmp]));for(ri j=0,up=1<<(m-c+1);j<up;++j)for(ri k=0;k<c;++k)for(ri l=0;l<c;++l)update(f[tmp][j][0][0],f[tmp^1][j][k][l]);tmp^=1;for(ri j=1;j<=m;++j,tmp^=1){ans=mul(ans,3);memset(f[tmp],0,sizeof(f[tmp]));for(ri sta=0,up=1<<(m-c+1);sta<up;++sta)for(ri k=0;k<c;++k)for(ri l=0;l<c;++l){if(!f[tmp^1][sta][k][l])continue;for(ri a,b,ns,t=0;t<3;++t){a=trans[0][k][t],b=trans[1][l][t],ns=sta;if(j>=c&&((sta>>(j-c))&1))ns^=1<<(j-c);if(a==c)ns^=1<<(j-c),a=fail[0][a];if(b==c){if((sta>>(j-c))&1)continue;b=fail[1][b];}update(f[tmp][ns][a][b],f[tmp^1][sta][k][l]);}}}}tmp^=1;for(ri i=0,up=1<<(m-c+1);i<up;++i)for(ri j=0;j<c;++j)for(ri k=0;k<c;++k)modify(ans,f[tmp][i][j][k]);cout<<ans<<'\n';}return 0;
}

转载于:https://www.cnblogs.com/ldxcaicai/p/10633611.html

2019.03.25 bzoj4572: [Scoi2016]围棋(轮廓线dp)相关推荐

  1. 2019.03.25 bzoj4539: [Hnoi2016]树(主席树+倍增)

    传送门 题意:给一棵大树,令一棵模板树与这棵树相同,然后进行mmm次操作,每次选择模板树中的一个节点aaa和大树中一个节点bbb,把aaa这棵子树接在bbb上面,节点编号顺序跟aaa中的编号顺序相同. ...

  2. 《SRPG游戏开发》导航(2019.03.04更新)

    <SRPG游戏开发>导航 第一章到第五章并没有使用Markdown,且经过CSDN几次改版和取消目录,这几章排版有些怪怪的. 2019.03.04 第十一章(十 - 十二) ,间章 第十一 ...

  3. Anaconda 2019.03 发布,Python 跨平台科学计算软件

    Python 科学计算包 Anaconda 发布 2019.03 版本,详细更新日志如下: 面向用户更改 conda与Windows Powershell完美集成. Windows Python包中包 ...

  4. 2019年25大人工智能趋势!一文看到未来

    来源:智东西 摘要:2019年25个AI趋势. 人工智能的下一步是什么?上周,知名机构CBinsights的分析师分析各个行业,得到了2019年最值得关注的25个人工智能趋势.虽然人工智能正在各个行业 ...

  5. AI+5G:2019.03.31第11届中国(深圳)IT领袖峰会【IT新未来: 5G与人工智能】内容概要

    AI+5G:2019.03.31第11届中国(深圳)IT领袖峰会[IT新未来: 5G与人工智能]内容概要 导读 5G+AI双核启动会更加珠联璧合.相得益彰. IOT 采集数据 → Deel Learn ...

  6. [2021.1.13多校省选模拟2]T1(动态规划/轮廓线dp)

    [2021.1.13多校省选模拟2]T1 一个经典的轮廓线dp,可以发现一定可以找到一条轮廓将这个图形分开,然后使得左半部分由左边处理,右半部分由右边处理,然后我们只需要处理这个折线即可,具体实现需要 ...

  7. 训练日志 2019.1.25

    昨天晚上熬夜看球...今天早上效率成功的低了不少...就补了一道题.. 下午打比赛都是之前的题,出的太少,效率不够高,有两道题思路很明确,但卡细节卡到死,long long 和 Runtime 以及把 ...

  8. [MP3]MP3固件持续分享(2019.1.25)

    转载自我的博客:https://blog.ljyngup.com/archives/179.html/ 如何只用一个月6RMB搭建一台自己的歪果SSR节点?https://blog.ljyngup.c ...

  9. E.03.25 Chinese Video Company Bilibili Eyes $2.8 Billion Hong Kong Share Sale

    2021.03.25 文章目录 [课程导读] [英文原文] [外刊原文] [课程导读] 2009年6月,哔哩哔哩网站上线.这家名字起得欢脱.从二次元内容出发.能发弹幕的视频网站,成立初期被用户们亲切地 ...

  10. 18天精读掌握《费曼物理学讲义卷一》 第9天 2019/6/25

    18天精读掌握<费曼物理学讲义卷一> 第9天 2019/6/25 1. 18日掌握<费曼物理学讲义>卷一计划概览 2. 今日学习成果 3. 今日时间表 4.Atimelogge ...

最新文章

  1. 中兴V880使用手记之五——刷入recovery
  2. Spring Batch在大型企业中的最佳实践
  3. ExtJs4之常用函数
  4. 你的代码糟粕比精华要多得多
  5. spring发展历程
  6. [Redis6]Redis相关知识介绍
  7. python开发实践教程_Python开发实践教程
  8. vantUI 弹出层(轻提示)案例 - 踩坑篇
  9. linux开机桌面出现网格,[转自linux联盟]openfoam 网格类编程
  10. Jenkins插件之有用
  11. 游戏版号重新发放,开发者可以松口气了!| 畅言
  12. python编程从入门到实战1-3章
  13. 25个常用的正则表达式汇总
  14. 1、NESSUS安装
  15. HTTP协议:接口测试_发送请求_post方法
  16. 智慧园区数据可视化大屏的优势分析
  17. 目标检测的模型haartraining培训
  18. 效率工具之SecureCRT
  19. IP首部校验和的计算
  20. ESP使用MQTT登陆阿里云,arduino环境

热门文章

  1. 使用纯生js实现图片轮换
  2. 只修改日期不修改时间(巧用convert函数)
  3. Windows Live Write:主流BSP的支持情况
  4. 【直播预告】“CCF-NLP走进高校”系列之“走进郑州大学”
  5. 【清华大学-腾讯】关系提取综述,Review and Outlook for Relation Extraction
  6. 一道头条面试题,小夕差点没读懂题目,找出数组中缺失的数字,最近击败100%的用户!...
  7. 2020国际机器翻译大赛:火山翻译力夺五项冠军
  8. 每日算法系列【LeetCode 1363】形成三的最大倍数
  9. [arXiv18]更快的基于非二叉化自底向上策略的转移系统成分句法分析
  10. Java中的优先队列——二叉堆