题意是给你一个自动机和一个字符串的括号表达式,问自动机能否接受这个字符串。

我一想,这不就是个模拟栈计算表达式+倍增么?

再一想,复杂度200*1000*10000*log(1e9),不对啊!

交上去试一发,卧槽A了?我:......

 #include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=+,M=;
int n,len,m,k,ka,go[][M],ed[],sta1[N],sta2[N],tot,tp1,tp2,num,GO[N][],buf[];
char s[N];
int newnode() {
int u=++tot;
for(int i=; i<=n; ++i)GO[u][i]=i;
return u;
}
int main() {
int T;
for(scanf("%d",&T); T--;) {
scanf("%s",s),len=strlen(s);
scanf("%d%d%d",&n,&m,&k);
for(int i=; i<=n; ++i) {
ed[i]=;
memset(go[i],,sizeof go[i]);
}
while(k--) {
int x;
scanf("%d",&x),x++;
ed[x]=;
}
while(m--) {
int u,v;
char ch;
scanf("%d%d %c",&u,&v,&ch),u++,v++;
go[u][ch-'a']=v;
}
tot=tp1=tp2=num=;
sta1[tp1++]=newnode(),sta2[tp2++]=;
for(int i=; i<len; ++i) {
if(s[i]=='(') {
sta1[tp1++]=newnode();
sta2[tp2++]=num;
num=;
} else if(s[i]==')') {
int U=sta1[--tp1],k=sta2[--tp2];
for(; k; k>>=) {
if(k&)for(int i=; i<=n; ++i)GO[sta1[tp1-]][i]=GO[U][GO[sta1[tp1-]][i]];
for(int i=; i<=n; ++i)buf[i]=GO[U][GO[U][i]];
for(int i=; i<=n; ++i)GO[U][i]=buf[i];
}
} else if(isdigit(s[i])) {
num=num*+(s[i]-'');
} else if(islower(s[i])) {
int ch=s[i]-'a';
for(int i=; i<=n; ++i)
GO[sta1[tp1-]][i]=go[GO[sta1[tp1-]][i]][ch];
}
}
printf("Case #%d: %s\n",++ka,ed[GO[][]]?"Yes":"No");
}
return ;
}

HDU - 5557 Matching Compressed String (自动机+倍增+表达式计算)的更多相关文章

  1. hdu 2586 How far away ?倍增LCA

    hdu 2586 How far away ?倍增LCA 题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=2586 思路: 针对询问次数多的时候,采取倍增 ...

  2. hdu 2896 病毒侵袭 AC自动机(查找包含哪些子串)

    病毒侵袭 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

  3. hdu 2896 病毒侵袭 ac自动机

    /* hdu 2896 病毒侵袭 ac自动机 从题意得知,模式串中没有重复的串出现,所以结构体中可以将last[](后缀链接)数组去掉 last[]数组主要是记录具有相同后缀模式串的末尾节点编号 .本 ...

  4. HDU 5842 Lweb and String(Lweb与字符串)

    p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...

  5. hdu 4850 Wow! Such String! 欧拉回路

    作者:jostree 转载请注明出处 http://www.cnblogs.com/jostree/p/4080264.html 题目链接:hdu 4850 Wow! Such String! 欧拉回 ...

  6. hdu 3553 Just a String (后缀数组)

    hdu 3553 Just a String (后缀数组) 题意:很简单,问一个字符串的第k大的子串是谁. 解题思路:后缀数组.先预处理一遍,把能算的都算出来.将后缀按sa排序,假如我们知道答案在那个 ...

  7. [leetcode-604-Design Compressed String Iterator]

    Design and implement a data structure for a compressed string iterator. It should support the follow ...

  8. LeetCode 604. Design Compressed String Iterator (设计压缩字符迭代器)$

    Design and implement a data structure for a compressed string iterator. It should support the follow ...

  9. [LeetCode] Design Compressed String Iterator 设计压缩字符串的迭代器

    Design and implement a data structure for a compressed string iterator. It should support the follow ...

随机推荐

  1. matplotlib画图总结--多子图布局

    1.subplot布局 subplot(nrows, ncols, index, **kwargs) subplot(pos, **kwargs) subplot(ax) x=[1,2,3] valu ...

  2. 文件input框选择图片实时显示小技巧

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. dockerfile 搭建nginx镜像

      昨晚看了看dockerfile的内容,想自己玩一玩.折腾了一晚上,到今天才顺利构建出来(弱鸡如我~). 首先,我新建了一个文件夹,并且放进了nginx源码包,建立了一个Dockerfile. Do ...

  4. win10配置Keras及GPU环境

    今天搭建了Keras深度学习的环境 详细记录一下 安装Anaconda3 Anaconda指的是一个开源的Python发行版本,其包含了conda.Python等180多个科学包及其依赖项. Anac ...

  5. jdk1.8 -- 自定义FunctionInterface

    一.自定义函数的理解 对于java提供的一些函数,用lambda表达式是可以解决一些问题的,但是在对于一些比较复杂的数据类型在处理时,可能会有些力不从心了,但是 我们可以通过自定义的一些函数,通过使用 ...

  6. TeX教程

    转自 [抢工作向]一个更适合玩物理的同学的论坛TeX教程 1. 基础知识 如何在你的帖子里插入一个\(\TeX\)环境来写公式呢?答案其实很简单,对于不同的要求,我们有两种方法. 第一种只需要在\(\ ...

  7. CentOS7 PHP cURL errno 35, 原因:CentOS7中没有安装curl和OpenSSL的最新版

    安装OpenSSL的最新版 话不多说,直接上安装步骤 #cd /usr/local/src # 跳过证书获取失败 # wget https://www.openssl.org/source/opens ...

  8. 【hash】Seek the Name, Seek the Fame

    [哈希和哈希表]Seek the Name, Seek the Fame 题目描述 The little cat is so famous, that many couples tramp over ...

  9. (转)查找算法:二叉排序树(BSTree)

    二叉排序树(Binary Sort Tree),又称为二叉查找树(Binary Search Tree) ,即BSTree. 构造一棵二叉排序树的目的,其实并不是为了排序,而是为了提高查找和插入删除的 ...

  10. 彭博社:博通正在与赛门铁克洽谈收购事宜(博通能买得起 又能讲故事的 没几个了 为了刺激资本的兴趣 只能瞎搞 就和intel 收购 麦咖啡一样。就像杜蕾斯收购美赞臣一样,也许只是纯粹的商业行为,哪行赚钱干哪行)

    彭博社今日消息,知名芯片制造商 Broadcom 公司正在就收购网络安全公司 Symantec 事宜进行高级会谈,因为 Broadcom 希望寻找半导体业务之外的机会,以实现多元化经营. 据称,在彭博 ...