BZOJ2272: [Usaco2011 Feb]Cowlphabet 奶牛文字
2024-08-25 14:53:05
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 ;
}
最新文章
- 图文解释XCode常用快捷键的使用
- 【2016-11-2】【坚持学习】【Day17】【通过反射自动将datareader转为实体info】
- 为何要使用Linux
- objective-c自学总结(三)---面向对象的封装,继承与多态
- Select模型及tcp select模型
- andorid
- Codeforces Round #349 (Div. 1) A. Reberland Linguistics dp
- EasyUI datagrid 改变url属性 实现动态加载数据
- EasyUI Datagrid 自定义列、Foolter及单元格编辑
- IntelliJ IDEA 创建web项目后添加Java EE (Tomcat)的依赖包
- 【7】python核心编程 第十一章-函数和函数式编程
- 春招实习面经分享(已拿到腾讯春招Offer)
- WEB音频API
- 新型USB病毒BadUSB 即使U盘被格式化也无法根除
- InnoDB存储引擎结构介绍
- PBRT笔记(8)——材质
- CentOS7 设置集群时间同步
- python之模块hashlib(提供了常见的摘要算法,如MD5,SHA1等等)
- 【RF库测试】算法运算
- JS-Object(2) 原型对象 ,prototype属性。
热门文章
- 452 Minimum Number of Arrows to Burst Balloons 用最少数量的箭引爆气球
- math数学函数
- AJPFX:关于面向对象的封装
- 2017-11-29 HTML5样式、链接和表格
- 关于react native在window下运行安卓的时候报 could not connect to development server
- AlertDialog的实现
- Apache Tomcat 之路(三 部署多个应用)
- reStructuredText学习
- 【分享】iTOP-iMX6UL开发板驱动看门狗 watchdog 以及 Linux-c 测试例程
- Method Dispatch in Protocol Extensions