1.题目描写叙述:点击打开链接

2.解题思路:本题利用字典树解决。本题要求查找全部的B[j]在A[i]中出现的总次数。那么我们能够建立一颗字典树,将全部的B[j]插入字典树,因为一个串的全部字串相当于它全部后缀的前缀。

因此在查找时候,仅仅须要查找A[i]的每个后缀就可以,然后累加这个后缀的前缀个数,就可以得到该后缀中子串的个数。全部后缀的值相加,就是终于的答案。

3.代码:

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<algorithm>
#include<cassert>
#include<string>
#include<sstream>
#include<set>
#include<vector>
#include<stack>
#include<map>
#include<queue>
#include<deque>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<ctime>
#include<cctype>
#include<functional>
using namespace std;typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
typedef pair <int, int> P;const int N=100000+10;
int n,m;
char A[N][10005];
char B[N];
struct Trie
{int tree[N][26],val[N],cnt;Trie(){init();}void init(){cnt=1;memset(tree,0,sizeof(tree));}void insert(char*s){int p=0,l=strlen(s);for(int i=0;i<l;i++){int a=s[i]-'a';if(!tree[p][a]){val[cnt]=0;tree[p][a]=cnt++;}p=tree[p][a];}++val[p];}int query(char*s){int p=0,l=strlen(s),ans=0;for(int i=0;i<l;i++){int a=s[i]-'a';if(!tree[p][a])return ans;p=tree[p][a];ans+=val[p];}return ans;}
}T;int main()
{int t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);T.init();for(int i=0;i<n;i++)scanf("%s",A[i]);ll ans;for(int i=0;i<m;i++){scanf("%s",B);T.insert(B);//将全部的B[j]插入字典树}for(int i=0;i<n;i++){ans=0;int l=strlen(A[i]);for(int j=0;j<l;j++)ans+=T.query(A[i]+j);//枚举后缀的前缀在字典树中出现多少次,得到该后缀的返回值,累加就是答案printf("%I64d\n",ans);}}
}

HDU 5384 Danganronpa (2015年多校比赛第8场)相关推荐

  1. HDU 5411 CRB and Puzzle (2015年多校比赛第10场)

    1.题目描写叙述:点击打开链接 2.解题思路:本题实际是是已知一张无向图.问长度小于等于m的路径一共同拥有多少条. 能够通过建立转移矩阵利用矩阵高速幂解决.当中,转移矩阵就是输入时候的邻接矩阵,同一时 ...

  2. hdu 5384 Danganronpa(字典树)

    题意: f(A,B)表示:B在A中作为子串出现的次数. 题目给出n个证据,m个子弹 Ai是证据.Bi是子弹.题目问:全部Bi对每一个Ai造成的伤害是多少,即每一个Bi在Ai中出现的次数总和. 解析: ...

  3. AC自动机 HDOJ 5384 Danganronpa

    题目传送门 1 /* 2 题意:多个文本串,多个模式串在每个文本串出现的次数 3 AC自动机:这就是一道模板题,杭电有道类似的题目 4 */ 5 /************************** ...

  4. 三校生计算机模拟试题1,甘肃省2015年“三校生”考试摸拟试题1

    2015年甘肃省"三校生"计算机应用高考模拟试题,命题组试题,命中率极高,冲刺高考专用考题! 甘肃省2015年"三校生"考试摸拟试题 (计算机应用基础) 班级 ...

  5. 2018年牛客多校算法寒假训练营练习比赛(第一场)C. 六子冲

    2018年牛客多校算法寒假训练营练习比赛(第一场)C. 六子冲 题目链接 做法:模拟即可 #include <bits/stdc++.h> #define P pair<int,in ...

  6. 【题集】牛客网·2018年全国多校算法寒假训练营练习比赛(第二场)

    原文链接:2018年全国多校算法寒假训练营练习比赛(第二场) A 吐泡泡 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Form ...

  7. HDU 5835 Danganronpa(弹丸论破)

    HDU 5835 Danganronpa(弹丸论破) Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Ja ...

  8. 【题集·待解决】牛客网·2018年全国多校算法寒假训练营练习比赛(第二场)

    原文链接:2018年全国多校算法寒假训练营练习比赛(第二场) A 吐泡泡 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K 64bit IO Form ...

  9. 教师进修学校计算机老师工作计划,★2015年教师进修学校工作计划

    2015年教师进修学校工作计划 2015年,教师进修学校要紧紧围绕全区教育教学中心工作及上级业务部门的工作部署,坚持"按需教研,按需培训"的原则,实施教师专业提升.教学研究引领.教 ...

最新文章

  1. Java的类,对象以及字段和方法
  2. 阿里云移动数据分析服务使用教程
  3. 架构周报:微信后台系统的演进之路
  4. Java IO流之随机读写流RandomAccessFile
  5. linux 进程间通信 dbus-glib【实例】详解四(上) C库 dbus-glib 使用(附代码)(编写接口描述文件.xml,dbus-binding-tool工具生成绑定文件)(列集散集函数)
  6. 【python】路径前添加 r表示不转义
  7. 学好英语要从多方面入手,语法就是一个方面,本篇经验将从大的方面宏观地谈谈如何学好英语语法...
  8. C++ vector容器类型
  9. 【Java】函数式接口与Lambda表达式
  10. python画正方形并涂色_关于python使用cv画矩形并填充颜色同时填充文字
  11. 阿克曼(Ackermann)函数
  12. work文档,Excel表格常用快捷键
  13. 如何做到异构数据的同步一致性
  14. HBase中MemStore flush的源码解析
  15. 拉格朗日Lagrange插值多项式
  16. 解决Angular里的报错:ERROR Error: Uncaught (in promise): NullInjectorError: R3InjectorError()
  17. 美国 转专业 计算机,​转专业申请计算机硕士,美国这些学校供你选择
  18. Apollo Planning决策规划算法代码详细解析 (2):Scenario执行
  19. 简约大气仿小米社区网站风格的WP主题模板
  20. 能不能推荐几本 C++ 的书?

热门文章

  1. jvm:虚方法与非虚方法
  2. nginx-http服务器
  3. Docker aufs存储驱动layer、diff、mnt目录的区别
  4. 关于网页制作的规划与流程图的使用
  5. centos 7 学习笔记(一)
  6. Apache Options Indexes FollowSymLinks详解
  7. 一天一点T-SQL:使用登录触发器进行安全管控
  8. AD RMS保护电子邮件安全
  9. python 易支付sdk
  10. Jmeter之http性能测试实战 NON-GUI模式 进行分布式压力测试——干货(十二)(转载)...