【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. js中如何获取对象的长度和名称

    js如何获取对象长度和名称 一.总结 一句话总结:对象的长度不能用.length获取,用js原生的Object.keys可以获取到 var obj = {'name' : 'Tom' , 'sex' ...

  2. html中隐藏一个元素的方法

    display:none;                                                      隐藏不占位 opacity:0; fliter:alpha(opa ...

  3. Git放弃本地更改恢复到资源库版本

    使用git版本控制工具在本地clone一份代码后,如果发现修改错误想恢复到资源库版本,下面两行可以轻松加愉快的搞定: git clean -xdf git checkout -f git的更多详细用法 ...

  4. codeforces 540 B School Marks【贪心】

    题意:一共n个数,给出其中k个数,要求这n个数的中位数为y,这n个数的和不超过x,补全剩下的n-k个数 先统计给出的k个数里面比中位数小的数, 如果cnt<=n/2,说明中位数还没有出现,把这n ...

  5. pandas学习系列(一):时间序列

    最近参加了天池的一个机场航空人流量预测大赛,需要用时间序列来预测,因此开始使用python的pandas库 发现pandas库功能的确很强大,因此在这记录我的pandas学习之路. # -*- cod ...

  6. nginx配置虚拟域名

           /usr/lcoal/nginx/conf/nginx.conf 配置详解如下: worker_processes   1;                                ...

  7. 发工资了T_T

    和哈比一起吃的四人餐 望京很好很和谐

  8. 洛谷3961 [TJOI2013]黄金矿工

    题目描述 小A最近迷上了在上课时玩<黄金矿工>这款游戏.为了避免被老师发现,他必须小心翼翼,因此他总是输.在输掉自己所有的金币后,他向你求助.每个黄金可以看做一个点(没有体积).现在给出你 ...

  9. Vuex-一个专为 Vue.js 应用程序开发的状态管理模式

    为什么会出现Vuex 非父子关系的组件如何进行通信?(Event Bus)bus.js import Vue from 'vue'; export default new Vue(); foo.vue ...

  10. python之禅---对象与元类

    众所周知,python是一门面向对象的编程语言,python中一切皆对象,那么我们先探讨一下什么是对象. 一.对象 在生活中一个事物就是一个对象,比如:一只猫就是一个对象,猫的体型.猫毛的颜色等是它的 ...