【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. ps学习入门篇

    http://www.360doc.com/content/12/0107/21/6932394_177976138.shtml 填充前景色 前景色是ALT+DELETE,背景色是CTRL+DELET ...

  2. [NOIP2015模拟10.27] [JZOJ4270] 魔道研究 解题报告(动态开点+权值线段树上二分)

    Description “我希望能使用更多的魔法.不对,是预定能使用啦.最终我要被大家称呼为大魔法使.为此我决定不惜一切努力.”——<The Grimoire of Marisa>雾雨魔理 ...

  3. TYVJ 1340 折半暴搜+二分

    思路: 1. 这 题 不卡常过不去啊-- (先加一个random_shuffle) 首先 我们可以折半 搜这一半可以到达的重量 sort一遍 然后搜另一半 对于路程中每一个解 我们可以二分前一半中加这 ...

  4. DedeCMS筛选简单实现方法不改后台源文件

    笔者在前面几篇文章中提到的dedecms筛选的实现方法,对新手来说实现过程较复杂.接下来分享一个最简单的实现在移动端上筛选功能. 最近在筹备移动端企业站,实现功能有:实现一个管理后台管理PC端和移动端 ...

  5. Git 如何把master的内容更新到分支

    Background: 当有人对master进行更新之后,你想让已经创建的分支内容更新到master的最新状态, bpan@5CG7022BM2 MINGW64 /d/GitRep/JIRA_Exte ...

  6. Android向unity发送消息

    有些时候需要Android向unity发送消息,有两种方法实现,一.通过unity再带的消息机制,二.通过注册回调的方式. 一.通过UnityPlayer.UnitySendMessage():方法 ...

  7. ECNUOJ 2143 端午节快乐

    端午节快乐 Time Limit:1000MS Memory Limit:65536KBTotal Submit:1720 Accepted:868 Description  有一段有趣的传说.公元前 ...

  8. eclipse 启动报错has value '1.7', but '1.8' is required

    由于安装elasticsearch5.x版本时需要jdk8,所以在本机安装了,不过后来发现启动eclipse时报错: Error: Registry key 'Software\JavaSoft\Ja ...

  9. Spring可扩展Schema标签

    基于Spring可扩展Schema提供自己定义配置支持 http://blog.csdn.net/cutesource/article/details/5864562 WARN : org.sprin ...

  10. OC便利方法

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { #if //    从面向对象的角度 ...