传送门

思路:

  还是比较水的(不看题解不看书),用 vis 存字典树上的每个点是多少个单词的前缀,bo 来存每个点是多少个单词的结尾(坑点:会有很多相同的单词,不能只有 bool 来存)。统计时:① 如果匹配串的长度小于单词的长度,ans+= vis;② 如果匹配串的长度≥单词长度,ans+=bo;③ 如果遇到字典树上的节点为空,直接返回。

标程:

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<algorithm>
  4. #include<cmath>
  5. #include<cstring>
  6. #include<string>
  7. #include<cstdlib>
  8. #include<stack>
  9. #include<vector>
  10. #include<queue>
  11. #include<deque>
  12. #include<map>
  13. #include<set>
  14. using namespace std;
  15. #define max(a,b) ((a)>(b)?(a):(b))
  16. #define min(a,b) ((a)<(b)?(a):(b))
  17. #define maxn 500002
  18. typedef long long LL;
  19. LL n,m,len,cnt=,ans=;
  20. LL a[maxn],ch[maxn][],vis[maxn],bo[maxn];
  21. inline LL read()
  22. {
  23. LL kr=,xs=;
  24. char ls;
  25. ls=getchar();
  26. while(!isdigit(ls))
  27. {
  28. if(!(ls^))
  29. kr=-;
  30. ls=getchar();
  31. }
  32. while(isdigit(ls))
  33. {
  34. xs=(xs<<)+(xs<<)+(ls^);
  35. ls=getchar();
  36. }
  37. return xs*kr;
  38. }
  39. inline void insert()
  40. {
  41. LL u=;
  42. for(LL i=;i<=len;i++)
  43. {
  44. if(!ch[u][a[i]]) ch[u][a[i]]=++cnt;
  45. u=ch[u][a[i]];
  46. vis[u]++;
  47. }
  48. bo[u]++;
  49. }
  50. inline void find()
  51. {
  52. LL u=;
  53. for(LL i=;i<=len;i++)
  54. {
  55. if(!ch[u][a[i]]) return;
  56. u=ch[u][a[i]];
  57. if(bo[u]&&i<len) ans+=bo[u];
  58. }
  59. ans+=vis[u];
  60. }
  61. int main()
  62. {
  63. freopen("S.in","r",stdin);
  64. freopen("S.out","w",stdout);
  65. n=read();m=read();
  66. for(LL i=;i<=n;i++)
  67. {
  68. len=read();
  69. for(LL j=;j<=len;j++)
  70. a[j]=read();
  71. insert();
  72. }
  73. for(LL i=;i<=m;i++)
  74. {
  75. ans=;
  76. len=read();
  77. for(LL j=;j<=len;j++)
  78. a[j]=read();
  79. find();
  80. printf("%lld\n",ans);
  81. }
  82. return ;
  83. }

P2922 [USACO08DEC]秘密消息Secret Message的更多相关文章

  1. 洛谷p2922[USACO08DEC]秘密消息Secret Message

    题目: 题目链接:[USACO08DEC]秘密消息Secret Message 题意: 给定n条01信息和m条01密码,对于每一条密码A,求所有信息中包含它的信息条数和被它包含的信息条数的和. 分析: ...

  2. 洛谷 P2922 [USACO08DEC]秘密消息Secret Message

    题目描述 Bessie is leading the cows in an attempt to escape! To do this, the cows are sending secret bin ...

  3. 【题解】P2922 [USACO08DEC]秘密消息Secret Message

    \(\text{Tags}\) 字典树,统计 题意: 给出两组\(\text{0/1}\)串\(\text{A,B}\),求解\(\text{A}\)中某串是\(\text{B}\)中某串的前缀,和\ ...

  4. Luogu P2922 [USACO08DEC]秘密消息Secret Message 字典树 Trie树

    本来想找\(01Trie\)的结果找到了一堆字典树水题...算了算了当水个提交量好了. 直接插入模式串,维护一个\(Trie\)树的子树\(sum\)大小,求解每一个文本串匹配时走过的链上匹配数和终点 ...

  5. 洛谷P2922 [USACO008DEC] 秘密消息Secret Message [Trie树]

    洛谷传送门,BZOJ传送门 秘密消息Secret Message Description     贝茜正在领导奶牛们逃跑.为了联络,奶牛们互相发送秘密信息.     信息是二进制的,共有M(1≤M≤5 ...

  6. [USACO08DEC] 秘密消息Secret Message

    题目描述 Bessie is leading the cows in an attempt to escape! To do this, the cows are sending secret bin ...

  7. [USACO08DEC] 秘密消息Secret Message (Trie树)

    题目链接 Solution Trie 树水题. 直接将前面所有字符串压入Trie 中. 在查询统计路上所有有单词的地方和最后一个地方以下的单词数即可. Code #include<bits/st ...

  8. 洛谷 2922 BZOJ 1590 [USACO08DEC]秘密消息Secret Message

    [题意概述] 给出n个01串组成的字典和m个询问,每次询问某个01串和多少个字典中的串有相同的前缀.(前缀长度是两串中较小的部分) [题解] 直接上Trie树即可.树上每个节点记录两个信息:这个节点有 ...

  9. Luogu2922 [USACO08DEC]秘密消息Secret Message (Trie树)

    统计以节点\(i\)结尾的数量与经过的数量 #include <iostream> #include <cstdio> #include <cstring> #in ...

随机推荐

  1. GC垃圾回收器

    java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”.jvm解决的两个问题:给对象分配内存以及回收分配给对象的内存.GC:将内存中不再被使用的对象进行回收.GC的作用域是JVM运行时 ...

  2. arcpy 零碎知识

    记忆力越来越差,在这里记些东西: 1.使用 CURRENT 引用 ArcMap 中当前加载的地图文档时,有时需要刷新内容列表或活动视图(数据视图或布局视图). 在 Python 窗口中输入以下两行,在 ...

  3. odoo配置文件内容详解

    odoo常用openerp-server.conf配置参数详解 参数 说明 用法 addons_path addons模块的查找路径,多个路径用逗号分隔 addons_path = E:\GreenO ...

  4. Torchvision 源码安装[Ubuntu]

    git clone https://github.com/pytorch/vision.git pip install pillow cd vision python setup.py install

  5. 图像分类(二)GoogLenet Inception_v2:Batch Normalization: Accelerating Deep Network Training by Reducing Internal Covariate Shift

    Inception V2网络中的代表是加入了BN(Batch Normalization)层,并且使用 2个 3*3卷积替代 1个5*5卷积的改进版,如下图所示: 其特点如下: 学习VGG用2个 3* ...

  6. 实现mybash

    任务内容 1.使用fork,exec,wait实现mybash 查找资料: fork函数 通过fork()系统调用我们可以创建一个和当前进程印象一样的新进程.我们通常将新进程称为子进程,而当前进程称为 ...

  7. VB调用C# dll

    cd C:\Windows\Microsoft.NET\Framework\v4.0.30319注册regasm myTest.dll /tlb:myTest.tlb

  8. Spring 学习教程(一):浅谈对Spring IOC以及DI的理解

    一.个人对IoC(控制反转)和DI(依赖注入)的理解我们平时在开发java web程序的时候,每个对象在需要使用它的合作对象时,自己都要将它要合作对象创建出来(比如 new 对象),这个合作对象是由自 ...

  9. sql语句格式化数字(前面补0)

    将一个数字例如33,或1使用t-sql语句转换成033或001 以下是详细分析: .,)得到1000 . as varchar) 将1000转换类型 .,) 从右边取3个字符得到033 将1格式化同上 ...

  10. java框架之SpringBoot(3)-日志

    市面上的日志框架 日志抽象层 日志实现 JCL(Jakarta Commons Logging).SLF4J(Simple Logging Facade For Java).JBoss-Logging ...