HDU 5384 Danganronpa (Trie树)
题意:给出两个集合S和T,集合中每个元素是个字符串,而T集合中任一元素都是个子弹,可以打S中的任一怪物,如果子弹是怪物的子串,那么才有伤害值1,若在怪物中出现多次,次数为该子弹打到该怪物的伤害值。每个子弹可以射不同怪物分别一次。求用完所有子弹,每个怪物受到的伤害值。
思路:先将所有子弹插到Trie树中。穷举每个怪物,将其所有的子串在Trie树中找,统计出现的次数,并输出。
(1)插子弹时在结点中记录以该结点为结束的有多少个子弹。
(2)每个怪物只需要截取size个str[i...end]在树中查找。
- #include <bits/stdc++.h>
- #define LL long long
- using namespace std;
- const int N=;
- int n, m;
- string str[N];
- char s[N];
- struct node
- {
- int num; //以本节点结尾的单词个数
- node *child[]; //孩子
- } pos[N*];
- node *tree_gen;
- int node_cnt;
- node * create_node()
- {
- pos[node_cnt].num=;
- for(int i=; i<; i++) pos[node_cnt].child[i]=;
- return &pos[node_cnt++];
- }
- void insert_tree(char *p)
- {
- node *node_p=tree_gen; //指向树根
- while(*p!='\0')
- {
- if( node_p->child[*p-'a']== ) //还没有这叉,就要建
- {
- node *new_node=create_node(); //创建新节点
- node_p->child[*p-'a']=new_node; //连接
- node_p=new_node;
- }
- else //已有这叉,继续往下
- node_p=node_p->child[*p-'a'];
- if( *(p+)=='\0' ) node_p->num++; //以此单词为结尾的
- p++;
- }
- }
- int check(string t)
- {
- int ans=;
- node *node_p=tree_gen; //指向树根
- int r=;
- while( node_p!= && r<t.size() )
- {
- if(node_p->child[ t[r]-'a' ])
- node_p=node_p->child[ t[r]-'a' ];
- else break;
- r++;
- ans+=node_p->num;
- }
- return ans;
- }
- int cal(string &t)
- {
- int ans=;
- for(int i=; i<t.size(); i++)
- {
- ans+=check(t.substr(i));
- }
- return ans;
- }
- int main()
- {
- //freopen("input.txt", "r", stdin);
- int t;
- cin>>t;
- while(t--)
- {
- scanf("%d%d", &n, &m);
- node_cnt=;
- tree_gen=create_node();
- for(int i=; i<n; i++)
- {
- cin>>str[i];
- }
- for(int i=; i<m; i++)
- {
- scanf("%s",s);
- insert_tree(s);
- }
- for(int i=; i<n; i++)
- {
- printf("%d\n", cal(str[i]));
- }
- }
- return ;
- }
AC代码
HDU 5384 Danganronpa (Trie树)的更多相关文章
- Hdu 5384 Danganronpa (AC自动机模板)
题目链接: Hdu 5384 Danganronpa 题目描述: 给出n个目标串Ai,m个模式串Bj,问每个目标串中m个模式串出现的次数总和为多少? 解题思路: 与Hdu 2222 Keywords ...
- HDU 5384 Danganronpa (AC自己主动机模板题)
题意:给出n个文本和m个模板.求每一个文本中全部模板出现的总次数. 思路:Trie树权值记录每一个模板的个数.对于每一个文本跑一边find就可以. #include<cstdio> #in ...
- hdu 5384 Danganronpa(字典树)
题意: f(A,B)表示:B在A中作为子串出现的次数. 题目给出n个证据,m个子弹 Ai是证据.Bi是子弹.题目问:全部Bi对每一个Ai造成的伤害是多少,即每一个Bi在Ai中出现的次数总和. 解析: ...
- hdu 5384 Danganronpa
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5384 思路:没学自动机时以为是道KMP然后就tle了好几把,AC自动机模板题 #include<cs ...
- hdu 4622 Reincarnation trie树+树状数组/dp
题意:给你一个字符串和m个询问,问你l,r这个区间内出现过多少字串. 连接:http://acm.hdu.edu.cn/showproblem.php?pid=4622 网上也有用后缀数组搞得. 思路 ...
- HDU 5384 Danganronpa (2015年多校比赛第8场)
1.题目描写叙述:点击打开链接 2.解题思路:本题利用字典树解决.本题要求查找全部的B[j]在A[i]中出现的总次数.那么我们能够建立一颗字典树,将全部的B[j]插入字典树,因为一个串的全部字串相当于 ...
- 2015 Multi-University Training Contest 8 hdu 5384 Danganronpa
Danganronpa Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- HDU 5384——Danganronpa——————【AC自动机】
Danganronpa Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Tot ...
- HDU 5384 字典树、AC自动机
题目:http://acm.hdu.edu.cn/showproblem.php?pid=5384 用字典树.AC自动机两种做法都可以做 #include<stdio.h> #includ ...
随机推荐
- javascript 注意事项
1.submit input 标签的 type里的submit是提交表单的按钮 提交时应注意 为 标签加上 “name=""”字段和form标签,才能达到想要的效果 2.正则表达 ...
- Form的用法
提交页面: <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w ...
- uva 11090
I I U P C 2 0 0 6 Problem G: Going in Cycle!! Input: standard input Output: standard output You are ...
- UITableView中cell的圆角(第一个和最后一个)
, , _width, _height)]; ; view.clipsToBounds = YES; _viewDetal = [[UIView alloc]init ...
- Android ListVIew 详解(一)
在android开发中ListView是比较常用的组件,它以列表的形式展示具体内容,并且能够根据数据的长度自适应显示.抽空把对ListView的使用做了整理,并写了个小例子,如下图. 列表的显示需要三 ...
- sql server 存储过程,事务
1.存储过程,事务 CREATE PROCEDURE Proc_ceshi @id int, ), @returnval int output AS BEGIN SET NOCOUNT ON; Set ...
- DMS平台从.NET 1.1升级到.NET 4.0的升级步骤
1)复制新增的项目到4.0平台解决方案对应目录,添加到到解决方案中:2)合并公共文件(比如修改了FormMain主界面.基础类库.售后界面的修改)3)控件的修订(Dev少数属性可能需要手工调整为新的方 ...
- Android 中建立一个OpenGL ES的开发环境
转自: http://wiki.eoe.cn/page/Building_an_OpenGL_ES_Environment.html 负责人:zhangql原文链接:http://docs.eoean ...
- 8天学通MongoDB——第二天 细说增删查改
原文地址:http://www.cnblogs.com/huangxincheng/archive/2012/02/19/2357846.html 看过上一篇,相信大家都会知道如何开启mongodb了 ...
- YARN集群维护部分问题汇总
云梯开发人员在云梯Yarn集群的搭建和维护过程中做了许多工作,本文选择这期间部分较为典型的问题,通过对这些问题的分析和解决方案,为大家分享分布式系统问题调查的经验. 调查的问题 1. 2013年初引入 ...