【HDOJ 5384】Danganronpa

AC自己主动机。

。。

当时感觉用字典树 标神也往自己主动机想来着。。手太生加上时间紧迫也没敲……回来一看题解什么AB同一时候建自己主动机。。。顿时愣了 什么叫同一时候建= =问了问財神说普通自己主动机。

。B串单建 立刻疯了……这不就是模板题么。。

。 B串建自己主动机 A串枚举查询 写完兴冲冲1T……立刻想法优化 建fail时压缩一下 查询时直接累计 不再循环找fail 171ms。。

。第二个自己主动机的题。。距上次蛮久了 这次一复习 感觉印象差点儿相同有了

代码(模板)例如以下:

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <queue> using namespace std; typedef struct Node
{
int ch[26],cnt,fail;
}Node; Node tr[2600011];
char a[100001][10002];
int tp; int SetNode()
{
memset(tr[tp].ch,-1,sizeof(tr[tp].ch));
tr[tp].cnt = 0;
return tp++;
} void Add(int site,char *str)
{
int i,k;
for(i = 0; str[i]; ++i)
{
k = tr[site].ch[str[i] - 'a'];
if(k == -1) tr[site].ch[str[i] - 'a'] = k = SetNode();
site = k;
}
tr[site].cnt++;
} void Build_AC(int site)
{
queue <int> q;
q.push(site);
int i,tmp;
while(!q.empty())
{
site = q.front();
q.pop();
for(i = 0; i < 26; ++i)
{
if(tr[site].ch[i] == -1) continue;
if(!site) tr[tr[site].ch[i]].fail = 0;
else
{
tmp = tr[site].fail;
while(tmp && tr[tmp].ch[i] == -1) tmp = tr[tmp].fail;
tr[tr[site].ch[i]].fail = (tr[tmp].ch[i] == -1)? tmp: tr[tmp].ch[i];
if(tr[tmp].ch[i] != -1) ///压缩计数器
tr[tr[site].ch[i]].cnt += tr[tr[tmp].ch[i]].cnt;
}
q.push(tr[site].ch[i]);
}
}
} int Search(int site,char *str)
{
int i,k,ans = 0;
for(i = 0; str[i]; ++i)
{
k = str[i] - 'a';
while(site && tr[site].ch[k] == -1) site = tr[site].fail;
if(tr[site].ch[k] != -1) site = tr[site].ch[k];
ans += tr[site].cnt;
}
return ans;
} int main()
{
int t,na,nb,i;
char str[100005];
scanf("%d",&t);
while(t--)
{
scanf("%d %d",&na,&nb);
tp = 0;
SetNode();
for(i = 0; i < na; ++i)
{
scanf("%s",a[i]);
}
while(nb--)
{
scanf("%s",str);
Add(0,str);
}
Build_AC(0);
for(i = 0; i < na; ++i)
{
printf("%d\n",Search(0,a[i]));
}
}
return 0;
}

【HDOJ 5384】Danganronpa的更多相关文章

  1. 【HDU 5384】Danganronpa(AC自己主动机)

    看官方题解貌似就是个自己主动机裸题 比赛的时候用kuangbin的AC自己主动机模板瞎搞的,居然A了,并且跑的还不慢.. 存下模板吧 #include<cstdio> #include&l ...

  2. 【HDOJ 5379】 Mahjong tree

    [HDOJ 5379] Mahjong tree 往一颗树上标号 要求同一父亲节点的节点们标号连续 同一子树的节点们标号连续 问一共同拥有几种标法 画了一画 发现标号有二叉树的感觉 初始标号1~n 根 ...

  3. 【HDOJ 2089】不要62

    [HDOJ 2089]不要62 第一个数位dp的题 做的老困难了...只是好歹是做出来了 迈出了第一步.. 对大牛来说这样的题都是小case ps:新上一个记忆化方法 一些绕弯的题里用dfs好想些 代 ...

  4. 【HDOJ 5371】 Hotaru&#39;s problem

    [HDOJ 5371] Hotaru's problem Manacher算法+穷举/set Manacher算法一好文:http://blog.csdn.net/yzl_rex/article/de ...

  5. 【HDOJ 5654】 xiaoxin and his watermelon candy(离线+树状数组)

    pid=5654">[HDOJ 5654] xiaoxin and his watermelon candy(离线+树状数组) xiaoxin and his watermelon c ...

  6. 【HDOJ 5399】Too Simple

    pid=5399">[HDOJ 5399]Too Simple 函数映射问题 给出m函数 里面有0~m个函数未知(-1) 问要求最后1~n分别相应仍映射1~n 有几种函数写法(已给定的 ...

  7. 【HDOJ 3652】B-number

    [HDOJ 3652]B-number 给一整数n 找<=n的整数中能被13整除且含有13的 数位dp 记忆化! . 一入记忆化深似海. ..再也不想用递推了...发现真的非常好想 仅仅要保证满 ...

  8. 【HDOJ 5419】 Victor and Toys (排列组合)

    [HDOJ 5419] Victor and Toys n个玩具 m个区间 每一个玩具有一个beauty值 问任选三个区间 三区间的MINleft~MAXright的和的期望值 预处理一个数组 存放每 ...

  9. 【HDOJ 2255】奔小康赚大钱(KM算法)

    [HDOJ 2255]奔小康赚大钱(KM算法) 奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K ...

随机推荐

  1. Linux 下段错误 core文件

    什么是core dump? core的意思是内存,dump的意思是扔出来,堆出来:当一个程序奔溃时,在进程当前工作目录的core文件中复制了该进程的存储图像.core文件仅仅是一个内存映像(同时加上调 ...

  2. PostgreSQL Replication之第四章 设置异步复制(6)

    4.6 有效的清理和恢复结束 最近几年, recovery.conf 已经变得越来越强大了.早在初期(在 PostgreSQL 9.0之前), 仅有 restore_command 和一些 recov ...

  3. BootStrap--panel面板

    1 <div class="panel panel-default"> <div class="panel-body"> 这是一个基本的 ...

  4. luogu-1908 逆序对 离散化+树状数组

    题目链接:https://www.luogu.org/problem/show?pid=P1908 题意 简单的求逆序对 思路 用树状数组来做逆序对 对于过大的数字来讲,用离散化处理即可 比赛的时候没 ...

  5. 说说Kindle那些事

    已经不记得是什么时候在哪里听过kindle这玩意的了,反正最开始买kindle还是大四上学期,貌似是2012-9-30,那时候是整个大学最闲的时候,不知道哪天闲的蛋疼一冲动就买了个kindle4黑色款 ...

  6. [NOI2015]品酒大会(SA数组)

    [NOI2015]品酒大会 题目描述 一年一度的"幻影阁夏日品酒大会"隆重开幕了.大会包含品尝和趣味挑战 两个环节,分别向优胜者颁发"首席品酒家"和" ...

  7. 学习笔记 Java_静态_继承 2014.7.12

    一.静态 1.构造函数:       特点:       1. 函数名和类名同样.       2. 不用定义返回值类型(和void不是一回事,而构造函数是根本不用定义返回值类型).       3. ...

  8. cocos2d-x 2.2.0 怎样在lua中注冊回调函数给C++

    cocos2d-x内部使用tolua进行lua绑定.可是引擎并没有提供一个通用的接口让我们能够把一个lua函数注冊给C++层面的回调事件. 翻看引擎的lua绑定代码,我们能够仿照引擎中的方法来做. 值 ...

  9. 怎样安装Windows7操作系统

     1. 打开电脑,插入Windows7安装光盘. 2. 又一次启动电脑: 3. 依据提示按下对应的键.进入选择启动项菜单选择光驱引导.在"Boot Menu"界面按键盘上下键选 ...

  10. VGA接口时序约束

    SF-VGA模块板载VGA显示器DA转换驱动芯片AVD7123,FPGA通过OUPLLN连接器驱动ADV7123芯片产生供给VGA显示器的色彩以及同步信号.SF-CY3核心模块与SF-VGA子模块连接 ...