首先通过hash建树

设f[i][j]表示第i个特殊符号从P的第j位开始匹配能到达哪里

记忆化搜索,对于底层贪心匹配。

#include<cstdio>
#include<cstring>
using std::strlen;
const int N=510,M=2010;
char a[10],tmp[10],b[N][10],s[M];
int T,n,m,i,j,k,h[N],son[N][2],len[N],f[N][M];
inline int hash(char a[]){
int t=0,j=strlen(a);
for(int i=0;i<5;i++)t=t*27+(i<j?(a[i]-'A'+1):0);
return t;
}
int F(int x,int y){
if(~f[x][y])return f[x][y];
if(son[x][0])return f[x][y]=F(son[x][1],F(son[x][0],y));
int j=y;
for(int i=0;j<m&&i<len[x];i++)if(b[x][i]==s[j])j++;
return f[x][y]=j;
}
int main(){
for(scanf("%d",&T);T--;puts(F(j,0)<m?"NO":"YES")){
scanf("%d",&n);
for(i=1;i<=n;i++){
scanf("%s%s%s",a,tmp,b[i]),h[i]=hash(a);
if(b[i][0]>='a'&&b[i][0]<='z')son[i][0]=0,len[i]=strlen(b[i]);
else son[i][0]=hash(b[i]),scanf("%s",tmp),scanf("%s",tmp),son[i][1]=hash(tmp);
}
for(i=1;i<=n;i++)if(son[i][0])for(j=0;j<2;j++)for(k=1;k<=n;k++)if(son[i][j]==h[k]){son[i][j]=k;break;}
scanf("%s%s",a,s),m=strlen(s);
for(i=1;i<=n;i++)for(j=0;j<=m;j++)f[i][j]=-1;
for(i=hash(a),k=1;k<=n;k++)if(i==h[k]){j=k;break;}
}
return 0;
}

  

BZOJ4060 : [Cerc2012]Word equations的更多相关文章

  1. [BZOJ 4060] Word Equations

    Link: BZOJ 4060 传送门 Solution: 可以发现字符串间的关系可以构成一棵树 于是我们先用字符串哈希建树,再树形$dp$即可 设$dp[i][j]$为第$i$个节点从$P$字符串的 ...

  2. bzoj AC倒序

    Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...

  3. 要back的题目 先立一个flag

    要back的题目 目标是全绿!back一题删一题! acmm7 1003 1004 acmm8 1003 1004 sysu20181013 Stat Origin Title Solved A Gy ...

  4. 怎样将word文件转化为Latex文件:word-to-latex-2.56具体解释

    首先推荐大家读一读这篇博文:http://blog.csdn.net/ibingow/article/details/8613556 --------------------------------- ...

  5. DocX开源WORD操作组件的学习系列二

    DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...

  6. 课程五(Sequence Models),第二 周(Natural Language Processing & Word Embeddings) —— 1.Programming assignments:Operations on word vectors - Debiasing

    Operations on word vectors Welcome to your first assignment of this week! Because word embeddings ar ...

  7. word公式编辑器公式

    Linear format equations and Math AutoCorrect in Word Applies To: Word 2016 Outlook 2016 Word 2013 Ou ...

  8. LaTeX:Figures, Tables, and Equations 插入图表和公式

    Figures To insert a figure in a LaTeX document, you write lines like this: \begin{figure} \centering ...

  9. word中添加Mathtype公式行间距改变问题

    转载链接:http://blog.sciencenet.cn/home.php?mod=space&uid=471807&do=blog&id=616838 最近碰到在word ...

随机推荐

  1. 百度图片爬虫-python版

               self.browser=imitate_browser.BrowserBase()            self.chance=0            self.chanc ...

  2. zoj3745 Salary Increasing

    OJ Problem Set - 3745 Salary Increasing Time Limit: 2 Seconds      Memory Limit: 65536 KB Edward has ...

  3. 国内常用NTP服务器地址及IP

    iptables实现80端口转发到8080端口上 iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080 ...

  4. 不用任何图片,只用简单的css写出唯美的钟表,就问你行吗?

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAGHCAIAAABJR31QAAAgAElEQVR4nOy9aXhc1ZUurPvcH7f73n ...

  5. css排版

    先介绍如何设定字体.颜色.大小.段落空白等比较简单的应用,后面再介绍下比如首字下沉.首行缩进.最后讲一些常用的web页面中文排版,比如中文字的截断.固定宽度词内折行(word-wrap和word-br ...

  6. jdk新特性

    自动拆装箱子: import org.junit.Test; public class Demo { /* * 自动拆装箱 * */ @Test public void ZhuangXiang() { ...

  7. 2.2 编程之美--不要被阶乘吓到[zero count of N factorial]

    [本文链接] http://www.cnblogs.com/hellogiser/p/zero-count-of-N-factorial.html [题目] 问题1:‍给定一个整数N,那么N的阶乘N! ...

  8. MongoDB副本集学习(一):概述和环境搭建

    MongoDB副本集概述 以下图片摘自MongoDB官方文档:http://docs.mongodb.org/manual/core/replication-introduction/ Primary ...

  9. Servlet过滤器和监听器

    1,Servlet过滤器 <filter> <filter-name>charset</filter-name> <filter-class>org.g ...

  10. mac os 显示文件列表命令 ls -a

    显示正常文件列表用ls就行了,但是要是想显示隐藏的文件,需要加-a