bzoj千题计划234:bzoj3802: Vocabulary
http://www.lydsy.com/JudgeOnline/problem.php?id=3802
dp[i][0/1/2/3] 表示前i个字母,第1、2个字符串,第2、3个字符串的关系分别为 < < , = < , < = , = =
枚举前i-1个字母 构成的关系
再枚举3个字符串的字母 转移
时间复杂度为 O(N* 26^3)
优化转移:
转移都是dp[i-1][0/1/2/3]-->dp[i][0/1/2/3]
预处理出f[i][j][k][s:0~3][t:0~3] 表示前面字母构成的字符串的关系为s,3个字符串分别加上1个字母i、j、k后转移到关系t的方案数
转移的时候不枚举3个字符串的字母,枚举新的关系0~3
直接用f数组转移
#include<cstdio>
#include<cstring> using namespace std; #define N 1000002 const int mod=1e9+; char s1[N],s2[N],s3[N]; int f[][][][][];
int dp[N][];
//0:i<j<k 1:i=j<k 2:i<j=k 3:i=j=k void pre()
{
int li,ri,lj,rj,lk,rk;
int t;
for(int i=;i<=;++i)
for(int j=;j<=;++j)
for(int k=;k<=;++k)
{
if(i==) li=,ri=;
else li=ri=i;
if(j==) lj=,rj=;
else lj=rj=j;
if(k==) lk=,rk=;
else lk=rk=k;
for(int ci=li;ci<=ri;++ci)
for(int cj=lj;cj<=rj;++cj)
for(int ck=lk;ck<=rk;++ck)
for(int s=;s<=;++s)
{
if(!s) t=;
else if(s==)
{
if(ci==cj) t=;
else if(ci<cj) t=;
else t=-;
}
else if(s==)
{
if(cj==ck) t=;
else if(cj<ck) t=;
else t=-;
}
else
{
if(ci>cj || ci>ck || cj>ck) t=-;
else if(ci<cj && cj<ck) t=;
else if(ci==cj && cj<ck) t=;
else if(ci<cj && cj==ck) t=;
else t=;
}
if(t>=) f[i][j][k][s][t]++;
}
}
} int main()
{
pre();
int T;
scanf("%d",&T);
int l1,l2,l3,len;
int x,y,z;
while(T--)
{
scanf("%s",s1+);
scanf("%s",s2+);
scanf("%s",s3+);
l1=strlen(s1+);
len=l1;
l2=strlen(s2+);
if(l2>len) len=l2;
l3=strlen(s3+);
if(l3>len) len=l3;
while(l1!=len) s1[++l1]='a'-;
while(l2!=len) s2[++l2]='a'-;
while(l3!=len) s3[++l3]='a'-;
for(int i=;i<=len;++i)
for(int j=;j<=;++j)
dp[i][j]=;
dp[][]=;
for(int i=;i<=len;++i)
{
x=s1[i]-'a'+;
if(x<) x=;
y=s2[i]-'a'+;
if(y<) y=;
z=s3[i]-'a'+;
if(z<) z=;
for(int j=;j<=;++j)
if(dp[i-][j])
for(int k=;k<=;++k)
dp[i][k]=(dp[i][k]+(long long)dp[i-][j]*f[x][y][z][j][k]%mod)%mod;
}
printf("%d\n",dp[len][]);
}
}
3802: Vocabulary
Time Limit: 10 Sec Memory Limit: 128 MB
Submit: 185 Solved: 68
[Submit][Status][Discuss]
Description
Input
Output
输出结果 Mod 10^9+9
Sample Input
?heoret?cal
c?mputer
?cience
jagiellonia
?niversity
kra?ow
?
b
c
Sample Output
52
1
bzoj千题计划234:bzoj3802: Vocabulary的更多相关文章
- bzoj千题计划300:bzoj4823: [Cqoi2017]老C的方块
http://www.lydsy.com/JudgeOnline/problem.php?id=4823 讨厌的形状就是四联通图 且左右各连一个方块 那么破坏所有满足条件的四联通就好了 按上图方式染色 ...
- bzoj千题计划196:bzoj4826: [Hnoi2017]影魔
http://www.lydsy.com/JudgeOnline/problem.php?id=4826 吐槽一下bzoj这道题的排版是真丑... 我还是粘洛谷的题面吧... 提供p1的攻击力:i,j ...
- bzoj千题计划280:bzoj4592: [Shoi2015]脑洞治疗仪
http://www.lydsy.com/JudgeOnline/problem.php?id=4592 注意操作1 先挖再补,就是补的范围可以包含挖的范围 SHOI2015 的题 略水啊(逃) #i ...
- bzoj千题计划177:bzoj1858: [Scoi2010]序列操作
http://www.lydsy.com/JudgeOnline/problem.php?id=1858 2018 自己写的第1题,一遍过 ^_^ 元旦快乐 #include<cstdio> ...
- bzoj千题计划317:bzoj4650: [Noi2016]优秀的拆分(后缀数组+差分)
https://www.lydsy.com/JudgeOnline/problem.php?id=4650 如果能够预处理出 suf[i] 以i结尾的形式为AA的子串个数 pre[i] 以i开头的形式 ...
- bzoj千题计划304:bzoj3676: [Apio2014]回文串(回文自动机)
https://www.lydsy.com/JudgeOnline/problem.php?id=3676 回文自动机模板题 4年前的APIO如今竟沦为模板,,,╮(╯▽╰)╭,唉 #include& ...
- bzoj千题计划292:bzoj2244: [SDOI2011]拦截导弹
http://www.lydsy.com/JudgeOnline/problem.php?id=2244 每枚导弹成功拦截的概率 = 包含它的最长上升子序列个数/最长上升子序列总个数 pre_len ...
- bzoj千题计划278:bzoj4590: [Shoi2015]自动刷题机
http://www.lydsy.com/JudgeOnline/problem.php?id=4590 二分 这么道水题 没long long WA了两发,没判-1WA了一发,二分写错WA了一发 最 ...
- bzoj千题计划250:bzoj3670: [Noi2014]动物园
http://www.lydsy.com/JudgeOnline/problem.php?id=3670 法一:KMP+st表 抽离nxt数组,构成一棵树 若nxt[i]=j,则i作为j的子节点 那么 ...
随机推荐
- Dictionary 对象
Dictionary 对象 对象的存储数据键/项对. 语法 Scripting.Dictionary 说明 Dictionary对象相当于 PERL 关联数组. 项目,可以是任何形式的数据,存储在数组 ...
- idea使用actiBPM插件中文乱码
idea 安转activiti插件后,编辑流程图发现保存后中文乱码,并且idea的字符集(Settings—>Editor—>File Encodings)已经设置为UTF-8,流程图中中 ...
- 一、Unity Editor自定义菜单
官方文档:https://unity3d.com/cn/learn/tutorials/topics/interface-essentials/unity-editor-extensions-menu ...
- Week11分数
- YQCB冲刺第二周第六天
今天的任务为界面的美化. 昨天的任务为实现由用户设置每月初始额度的功能. 暂未遇到问题. 站立会议 任务面板
- Python 安装 imread报错
看到一篇博客才解决 http://blog.csdn.net/u010480899/article/details/52701025
- vs2013的安装与使用 测试
vs2013软件我去年已经用过,可是当时只是鉴于对于c语言的编程,并没有觉得好用,况且好多的功能自并没有去深入研究,所以当时对于这个软件还是排斥的.安装的时候是别人帮我装的,所以并没有在安装的过程有问 ...
- Linux基础四(服务管理)
目录 一.简介与分类 1.系统的默认运行级别 2.服务的分类 3.服务与端口 二.服务管理 1.RPM包服务管理 2.源码包服务管理 三.服务管理总结 一.简介与分类 1. 系统的运行级别 1.1 默 ...
- Alpha冲刺——day7
Alpha冲刺--day7 作业链接 Alpha冲刺随笔集 github地址 团队成员 031602636 许舒玲(队长) 031602237 吴杰婷 031602220 雷博浩 031602634 ...
- 用prop还是attr
jquery中attr和prop的区别 在高版本的jquery引入prop方法后,什么时候该用prop?什么时候用attr?它们两个之间有什么区别?这些问题就出现了. 关于它们两个的区别,网上的答 ...