bzoj3802: Vocabulary
Description
Input
Output
输出结果 Mod 10^9+9
在末尾补0直到三个串等长,dp一下,状态表示为当前考虑了前i个位置,三个串的大小关系(1=2=3,1<2=3,1=2<3,1<2<3),预处理一下每种情况的状态转移矩阵(但矩阵乘法复杂度不优,因此直接计算)
#include<cstdio>
#include<cstring>
typedef long long i64;
const int P=1e9+;
int T,l[],ml,t[][][][][],ls[],rs[];
int f[],g[];
char s[][];
void maxs(int&a,int b){if(a<b)a=b;}
int sgn(int a,int b){return +(a>b)-(a<b);}
#define F(i,n) for(int i=0;i<n;++i)
int main(){
for(int i=;i<;++i)ls[i]=rs[i]=i;
ls[]=;rs[]=;
F(i,)F(j,)F(k,){
int(*A)[]=t[i][j][k];
for(int a=ls[i];a<=rs[i];++a)
for(int b=ls[j];b<=rs[j];++b)
for(int c=ls[k];c<=rs[k];++c){
int xx=sgn(a,b),yy=sgn(b,c);
F(x,)F(y,){
int x1=(x?xx:),y1=(y?yy:);
if(x1<&&y1<)++A[x1*+y1][x*+y];
}
}
}
for(scanf("%d",&T);T;--T){
ml=;
F(i,){
scanf("%s",s[i]);
l[i]=strlen(s[i]);
maxs(ml,l[i]);
}
F(i,){
F(j,l[i])s[i][j]=s[i][j]=='?'?:s[i][j]-'a'+;
for(int j=l[i];j<ml;++j)s[i][j]=;
}
F(a,)f[a]=g[a]=;
f[]=;
F(i,ml){
F(a,)g[a]=;
int(*A)[]=t[s[][i]][s[][i]][s[][i]];
F(a,)F(b,){
g[a]=(g[a]+i64(f[b])*A[a][b])%P;
}
F(a,)f[a]=g[a];
}
printf("%d\n",(f[]+P)%P);
}
return ;
}
bzoj3802: Vocabulary的更多相关文章
- bzoj千题计划234:bzoj3802: Vocabulary
http://www.lydsy.com/JudgeOnline/problem.php?id=3802 dp[i][0/1/2/3] 表示前i个字母,第1.2个字符串,第2.3个字符串的关系分别为 ...
- CSS Vocabulary – CSS 词汇表,你都掌握了吗?
CSS 是前端开发必备技能,入门容易,深入难.比如像 Pseudo-class.Pseudo-element.Media query.Media type 以及 Vendor prefix 的概念,很 ...
- [BEC][hujiang] Lesson03 Unit1:Working life ---Grammar & Listening & Vocabulary
3 Working life p8 Grammar Gerund and infinitive(动名词和不定式) 一般而言: 1 动词后面接动名词还是不定式没有特定规则,主要取决于语言习 ...
- Vocabulary & Phrase
Vocabulary A ANSI 美国国家标准学会,American National Standards Institute的缩写 a couple of [口语]少数的,几个 a s ...
- Duplicate column name 'vocabulary'
创建一个视图: 报错:Duplicate column name 'vocabulary' 意思是视图select的列名重复了,取别名 改成这样就ok了
- 11. English vocabulary 英语词汇量
11. English vocabulary 英语词汇量 (1) The exact number of English words is not known.The large dictionari ...
- Easy-to-Learn English Travel Phrases and Vocabulary!
Easy-to-Learn English Travel Phrases and Vocabulary! Share Tweet Share Tagged With: Real Life Englis ...
- American Football Vocabulary!
American Football Vocabulary! Share Tweet Share You’ll learn all about the vocabulary of American fo ...
- week 4 Vocabulary in paper
1.Using action verbs 1.1 deffenence between action verbs and fuzzy verbs Action verbs(strong verbs) ...
随机推荐
- Java回顾之反射
在这一篇文章里,我们关注反射及其相关话题. 反射可以帮助我们查看指定类型中的信息.创建类型的实例,调用类型的方法.我们平时使用框架,例如Spring.EJB.Hibernate等都大量的使用了反射技术 ...
- 一个产生临时图片Url的地方
- UriComponentsBuilder和UriComponents url编码
Spring MVC 提供了一种机制,可以构造和编码URI -- 使用UriComponentsBuilder和UriComponents. 功能相当于 urlencode()函数,对url进行编码, ...
- 最全Python内置函数
内置函数的基本使用 abs的使用: 取绝对值 absprint(abs(123))print(abs(-123)) result:123123 all的使用: 循环参数,如果每个元素都为真的情况下,那 ...
- Leetcode 51
//看了一次解析后,一次AC,用一个pos记录行列.class Solution { public: vector<vector<string>> solveNQueens(i ...
- 将java打jar包成linux后台服务service
将java打jar包成linux后台服务service 第一步:将java程序打成jar包 build.gradle配置文件中加spring-boot-gradle-plugin插件,具体配置如下(配 ...
- 修复Ubuntu下XTerm不能正常显示中文字体的问题
打开/etc/X11/app-defaults/XTerm在最后添加如下代码: Xft.dpi:96 xpdf.title: PDF XTerm*faceSize: 1 ...
- bzoj 1854 构图 并查集
我们可以把一件装备看成一条边,两个属性看成两个点,那么这就相当于读入了一张图 当读入每一个x,y时,我们找到两个点的祖先节点,fx,fy,我们保证祖先节点在该连通块 中编号(装备属性)最大,用flag ...
- Backbone设计思路和关键源码分析
一. Backbone的江湖地位: backbone作为一个老牌js框架为大规模前端开发提供了新的开发思路:前端MVC模式,这个模式也是前端开发演变过程中的一个重要里程碑,也为MVVM和Redux等开 ...
- rxjava 调用retrofit执行网络请求的过程
retrofit流程图 -1.RxJava调用Retrofit,从requestGtPushSaeUserInfo()中获得被观察者observable,然后new一个观察者向它订阅 0.从业务中 ...