n<=250个大写字母和m<=250个小写字母,给p<=200个合法相邻字母,求用这些合法相邻字母的规则和n+m个字母能合成多少合法串,答案mod 97654321.

什么鬼膜数。。

f(i,j,k)--i个大写字母,j个小写字母,最后一个字母是k,,其中k是小写字母,p是能接在k前面的任意字母,k是大写字母的话同理。

这样复杂度是n*m*26*26?假的!i,j确定后只有p种合法转移,所以就n*m*p。

trick:记得算i=0和j=0的情况!!!

 #include<cstring>
#include<cstdlib>
#include<cstdio>
//#include<assert.h>
//#include<time.h>
#include<math.h>
#include<algorithm>
//#include<iostream>
using namespace std; bool isdigit(char c) {return c>='' && c<='';}
int qread()
{
char c;int s=,f=;while (!isdigit(c=getchar())) f=(c=='-'?-:);
do s=s*+c-''; while (isdigit(c=getchar())); return s*f;
} const int mod=;
int da,xiao,m;
int f[][][];
int id(char c) {return (c>='a' && c<='z')?c-'a':c-'A'+;}
bool isalpha(char c) {return (c>='a' && c<='z') || (c>='A' && c<='Z');}
struct Edge{int to,next;}edge[];int first[],le=;
void in(int x,int y) {Edge &e=edge[le];e.to=y;e.next=first[x];first[x]=le++;}
int main()
{
da=qread(),xiao=qread(),m=qread();
memset(first,,sizeof(first));
for (int i=;i<=m;i++)
{
char c1,c2;
while (!isalpha(c1=getchar()));
c2=getchar();
in(id(c2),id(c1));
}
for (int i=;i<;i++) f[][][i]=,f[][][i]=;
for (int i=;i<;i++) f[][][i]=,f[][][i]=;
for (int i=;i<=da;i++)
for (int j=;j<=xiao;j++) if (i+j>=)
{
if (j) for (int now=;now<;now++)
{
f[i][j][now]=;
for (int k=first[now];k;k=edge[k].next)
{
const Edge &e=edge[k];
f[i][j][now]+=f[i][j-][e.to],
f[i][j][now]-=f[i][j][now]>=mod?mod:;
}
}
if (i) for (int now=;now<;now++)
{
f[i][j][now]=;
for (int k=first[now];k;k=edge[k].next)
{
const Edge &e=edge[k];
f[i][j][now]+=f[i-][j][e.to],
f[i][j][now]-=f[i][j][now]>=mod?mod:;
}
}
}
int ans=;
for (int i=;i<;i++) ans+=f[da][xiao][i],ans-=ans>=mod?mod:;
printf("%d\n",ans);
return ;
}

最新文章

  1. 图文解释XCode常用快捷键的使用
  2. 【2016-11-2】【坚持学习】【Day17】【通过反射自动将datareader转为实体info】
  3. 为何要使用Linux
  4. objective-c自学总结(三)---面向对象的封装,继承与多态
  5. Select模型及tcp select模型
  6. andorid
  7. Codeforces Round #349 (Div. 1) A. Reberland Linguistics dp
  8. EasyUI datagrid 改变url属性 实现动态加载数据
  9. EasyUI Datagrid 自定义列、Foolter及单元格编辑
  10. IntelliJ IDEA 创建web项目后添加Java EE (Tomcat)的依赖包
  11. 【7】python核心编程 第十一章-函数和函数式编程
  12. 春招实习面经分享(已拿到腾讯春招Offer)
  13. WEB音频API
  14. 新型USB病毒BadUSB 即使U盘被格式化也无法根除
  15. InnoDB存储引擎结构介绍
  16. PBRT笔记(8)——材质
  17. CentOS7 设置集群时间同步
  18. python之模块hashlib(提供了常见的摘要算法,如MD5,SHA1等等)
  19. 【RF库测试】算法运算
  20. JS-Object(2) 原型对象 ,prototype属性。

热门文章

  1. 452 Minimum Number of Arrows to Burst Balloons 用最少数量的箭引爆气球
  2. math数学函数
  3. AJPFX:关于面向对象的封装
  4. 2017-11-29 HTML5样式、链接和表格
  5. 关于react native在window下运行安卓的时候报 could not connect to development server
  6. AlertDialog的实现
  7. Apache Tomcat 之路(三 部署多个应用)
  8. reStructuredText学习
  9. 【分享】iTOP-iMX6UL开发板驱动看门狗 watchdog 以及 Linux-c 测试例程
  10. Method Dispatch in Protocol Extensions