BZOJ4060 : [Cerc2012]Word equations
首先通过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的更多相关文章
- [BZOJ 4060] Word Equations
Link: BZOJ 4060 传送门 Solution: 可以发现字符串间的关系可以构成一棵树 于是我们先用字符串哈希建树,再树形$dp$即可 设$dp[i][j]$为第$i$个节点从$P$字符串的 ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- 要back的题目 先立一个flag
要back的题目 目标是全绿!back一题删一题! acmm7 1003 1004 acmm8 1003 1004 sysu20181013 Stat Origin Title Solved A Gy ...
- 怎样将word文件转化为Latex文件:word-to-latex-2.56具体解释
首先推荐大家读一读这篇博文:http://blog.csdn.net/ibingow/article/details/8613556 --------------------------------- ...
- DocX开源WORD操作组件的学习系列二
DocX学习系列 DocX开源WORD操作组件的学习系列一 : http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_sharp_001_docx1.htm ...
- 课程五(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 ...
- word公式编辑器公式
Linear format equations and Math AutoCorrect in Word Applies To: Word 2016 Outlook 2016 Word 2013 Ou ...
- LaTeX:Figures, Tables, and Equations 插入图表和公式
Figures To insert a figure in a LaTeX document, you write lines like this: \begin{figure} \centering ...
- word中添加Mathtype公式行间距改变问题
转载链接:http://blog.sciencenet.cn/home.php?mod=space&uid=471807&do=blog&id=616838 最近碰到在word ...
随机推荐
- ssh面试题
ssh面试题 创建时间: 2015-8-12 22:37 来源: http://wenku.baidu.com/link?url=cw1B46f98hAde0kmr3J-wv7PpklZJRmf6I ...
- angular 监听ng-repeat结束时间
有些时候我们想要监听angular js中的 ng-repeat结束事件,从而好初始化一些我们的第三方或者其他需要初始化的js. 我们可以这样处理: js 中这样定义 : //监听事件 是否加载完毕a ...
- Kali Linux下破解WIFI密码挂载usb无线网卡的方法
Kali Linux下破解WIFI密码挂载usb无线网卡的方法 时间:2014-10-12 来源:服务器之家 投稿:root 首先我要说的是,wifi密码的破解不是想象中的那么容易,目前还 ...
- [转]sql语句中出现笛卡尔乘积 SQL查询入门篇
本篇文章中,主要说明SQL中的各种连接以及使用范围,以及更进一步的解释关系代数法和关系演算法对在同一条查询的不同思路. 多表连接简介 在关系数据库中,一个查询往往会涉及多个表,因为很少有数据库只有一个 ...
- 基于nginx和uWSGI在Ubuntu上部署Django
转自: http://www.jianshu.com/p/e6ff4a28ab5a
- 【OpenStack】OpenStack系列16之OpenStack镜像制作
参考 参考: https://www.google.com.hk/?gws_rd=ssl#safe=strict&q=openstack+img+%E5%88%B6%E4%BD%9C http ...
- 那些臭名昭著的sql
两个或多个表关联,没写where条件,大量的笛卡尔值,严重时会导致数据库有问题. select * from a, b left join c on b.id = c.id left join d o ...
- Java for LeetCode 174 Dungeon Game
The demons had captured the princess (P) and imprisoned her in the bottom-right corner of a dungeon. ...
- 【回溯】n皇后问题
问题 U: [回溯]n皇后问题 时间限制: 1 Sec 内存限制: 128 MB提交: 4 解决: 4[提交][状态][讨论版] 题目描述 在一个国际象棋棋盘上,放置n个皇后(n<10),使 ...
- 当Android工程中提示你找不到头文件,但你已经设置头文件路径了
虽然在Android.mk文件中,配置了LOCAL_C_INCLUDES路径,但是工程中的红色叉号一直提示找不到头文件 这时,你在工程树目录中展开Includes项,捣鼓捣鼓,重新build下,或许就 ...