建个只有2个串的AC自动机,状态为dp[i][j][k][st]表示向右走了i步,向下走了j步,位于结点k,状态为st的总的方案数。

直接裸dp可过,一炮AC,比赛的时候这题看都没有看,比较可惜……主要是比赛前期出题要稳。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <queue>
using namespace std;
typedef long long LL;
const LL mod=1000000007;
const int maxn=200;
const int sigma=2;
int ch[maxn][sigma],val[maxn],sz;
void init(){sz=1;memset(ch[0],0,sizeof(ch[0]));memset(val,0,sizeof(val));}
int idx(char c){return c=='R'?0:1;}
void insert(char *s,int v)
{int u=0,n=strlen(s);for(int i=0;i<n;i++){int c=idx(s[i]);if(!ch[u][c]){memset(ch[sz],0,sizeof(ch[sz]));val[sz]=0;ch[u][c]=sz++;}u=ch[u][c];}val[u]|=(1<<v);
}
int f[maxn];
void getfail()
{queue<int> q;f[0]=0;for(int c=0;c<sigma;c++){int u=ch[0][c];if(u) {f[u]=0;q.push(u);}}while(!q.empty()){int r=q.front();q.pop();for(int c=0;c<sigma;c++){int u=ch[r][c];if(!u){ch[r][c]=ch[f[r]][c];continue;}q.push(u);int v=f[r];while(v && !ch[v][c]) v=f[v];f[u]=ch[v][c];val[u]|=val[f[u]];}}
}
int m,n;
char s1[maxn],s2[maxn];
int dp[110][110][maxn][4];
int main()
{//freopen("in.txt","r",stdin);int T;scanf("%d",&T);while(T--){init();scanf("%d%d",&m,&n);scanf("%s%s",s1,s2);insert(s1,0);insert(s2,1);int l1=strlen(s1),l2=strlen(s2);getfail();for(int i=0;i<=m+1;i++)for(int j=0;j<=n+1;j++)for(int k=0;k<sz;k++)for(int st=0;st<4;st++)dp[i][j][k][st]=0;dp[0][0][0][0]=1;for(int i=0;i<=m;i++)for(int j=0;j<=n;j++)for(int k=0;k<sz;k++)for(int st=0;st<4;st++) if(dp[i][j][k][st]>0){dp[i+1][j][ch[k][0]][st|val[ch[k][0]]]=(dp[i+1][j][ch[k][0]][st|val[ch[k][0]]]+dp[i][j][k][st])%mod;dp[i][j+1][ch[k][1]][st|val[ch[k][1]]]=(dp[i][j+1][ch[k][1]][st|val[ch[k][1]]]+dp[i][j][k][st])%mod;}LL ans=0;for(int i=0;i<sz;i++) ans=(ans+dp[m][n][i][3])%mod;printf("%lld\n",ans);//printf("%I64d\n",ans);}return 0;
}

南京网预赛 11 BY bly相关推荐

  1. 南京网预赛02 BY bly

    刚开始的时候把题目想简单了,交了好多炮,始终是WA,浪费了很多时间. 其实这题就是按规则将kmp做个变形,找出原串中所有可以匹配的起始位置,然后dp一遍即可得到结果. 可能是kmp打的太少,比赛的时候 ...

  2. android11文件包百度云,百度网盘11.0app

          百度网盘11.0app是一款非常好用的超级云存储客户端,百度网盘11.0安卓版功能强劲,为用户提供空间超大云存储服务,百度网盘11.0app支持多类型文件的备份.分享.查看和处理,自建多个 ...

  3. HTML5响应式手机模板:H5网站设计——政府街道社区wap微信官网模板(11个页面) HTML+CSS+JavaScript 手机模板wap 手机网站模板 企业手机网站模板...

    HTML5响应式手机模板:H5网站设计--政府街道社区wap微信官网模板(11个页面) HTML+CSS+JavaScript 手机模板wap 手机网站模板 企业手机网站模板 H5手机网站模板 响应式 ...

  4. IDC评述网:11月份海外域名主机服务商TOP10

    根据IDC评述网最新数据显示,截至2013年11月30日,海外域名主机服务商综合积分排名前三位的是GoDaddy.Enom和NetwordSolution.其中,GoDaddy综合积分高达336160 ...

  5. 鸡泽:中国辣椒网引来11万份合同

    河北省鸡泽县曹庄乡的张建民是当地的一位辣椒生产大户,去年,利用中国辣椒网,以理想的价格顺利销售了自家种植的辣椒.现在,他时常上网了解辣椒信息,已经离不开网络了. 在鸡泽县,有许多与张建民一样经常上网的 ...

  6. WIFI断网: 802.11协议Deauthentication Reason Codes

    AP:代表路由器 Station:代表设备 802.11 Deauth Reason Codes中文说明:点击下载 From

  7. 【一周头条盘点】中国软件网 2017.11.3~2017.11.7

    每一个企业级的人 都置顶了 中国软件网 中国软件网 为你带来最新鲜的行业干货 趋势动态 云徙科技包志刚:新零售最重要的特点是时时在线 云徙科技创始人兼CEO包志刚在受访时表示:对于零售行业,原来的消费 ...

  8. 贝叶斯网专题11:参数学习之极大似然估计

    第一部分:贝叶斯网基础 1.1 信息论基础 1.2 贝叶斯网基本概念 1.3 变量独立性的图论分析 第二部分:贝叶斯网推理 2.1 概率推理中的变量消元方法 2.2 团树传播算法 2.3 近似推理 2 ...

  9. 今年某宝网双11“喵糖游戏”又翻车了?遭大量网友举报

    一年一度的双十一购物大狂欢又来啦.2021年,某宝双十一的游戏又换了一个新花样,今年的活动由叠猫猫变成了喵糖总动员. 和以往一样,淘宝为了留存用户,设置了复杂的任务和奖励机制,引导用户长时间留在平台上 ...

最新文章

  1. 关键路径法及C语言实现
  2. cruzer php sandisk 闪迪u盘量产工具_SanDisk Cruzer Micro下载
  3. PollardRho大整数分解
  4. 导入第三方依赖库slidingmenu
  5. 的run代码_小心使用 Task.Run 续篇
  6. Java中的位移运算符
  7. NetStatusEvent info对象的状态或错误情况的属性
  8. Windows操作系统的各进程的作用
  9. 【2018CPCP-Final G:】Pastoral Life in Stardew Valley
  10. gradle 区分系统_Android 学习记录_系统结构, res 目录, App 目录下的 build.gradle 文件...
  11. 英语各类词担任的句子成分
  12. Python金融行业必备工具
  13. 杭州异地身份证办理条件以及材料
  14. 未来已来,云上安全SaaS化势不可挡
  15. Android拍照失败以及成功后拿不到照片(照片裁剪加载失败)原因之一
  16. 数据结构与算法Python版之北大慕课笔记(五)
  17. meo学习笔记1:编译是什么——程序的执行过程概述
  18. 计算机网络英文习题(中文及答案解析)
  19. 编译原理:算符优先分析实验
  20. 会议室大屏幕用投影还是拼接屏好?

热门文章

  1. DeepMind「通才」AI智能体Gato来了,多模态、多任务,受大语言模型启发
  2. 山西师范大学现代文理学院计算机一级试题,山西师范大学现代文理学院2007—2008学年第一学期期末考.doc...
  3. win7 下使用超级终端
  4. 微信小程序中使用slot插槽
  5. 洛谷 P3014 [USACO11FEB]牛线Cow Line
  6. 使用TamperMonkey实现慕课网自动播放下一集
  7. 矫形鞋的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  8. 数组c语言抓小偷,警察抓小偷C语言源码
  9. WSL 下的Linux删除文件夹
  10. 安卓 linux launcher,关于android使用自己的launcher替换默认launcher的方法