• \(\text{Tags}\)

    • 字典树,统计

  • 题意:

    • 给出两组\(\text{0/1}\)串\(\text{A,B}\),求解\(\text{A}\)中某串是\(\text{B}\)中某串的前缀,和\(\text{B}\)中某串是\(\text{A}\)中某串的前缀的数量之和。
  • 分析:

    • 对于\(\text{A}\)建立字典树。另外附加两个数组:
    • \(\text{int Son[i]}\)表示节点 \(\text{i}\) 点\(\text{Son[i]}\)儿子。
    • \(\text{int End[i]}\)表示有\(\text{End[i]}\)个字符串终结于\(\text{i}\)。
    • 对于每个询问,沿着字典树向下走,累加沿途的\(\text{End[i]}\) 。
    • 如果不能匹配,返回累加值。
    • 如果整个询问都匹配成功,还要加上最后一个节点的儿子数量。
  • 参考代码:

    • #include <stdio.h>
      #include <string.h>
      #define re register
      #define GC getchar()
      #define Clean(X,K) memset(X,K,sizeof(X))
      int Qread () {
      int X = 0 ;
      char C = GC ;
      while (C > '9' || C < '0') C = GC ;
      while (C >='0' && C <='9') {
      X = X * 10 + C - '0' ;
      C = GC ;
      }
      return X ;
      }
      const int Maxn = 500005 , Base = 2;
      int T[Maxn][Base] , Tot = 0 , M , N , End[Maxn] , Son[Maxn] , A[Maxn];
      void Add (int Now) {
      int P = 0 ;
      for (re int i = 0 ; i < Now ; ++ i) {
      if (!T[P][A[i]]) T[P][A[i]] = ++ Tot;
      ++ Son[P] ;
      P = T[P][A[i]] ;
      }
      ++ End[P] ;
      }
      int Ask (int Now) {
      int P = 0 , Ans = 0;
      for (re int i = 0 ; i < Now ; ++ i) {
      if (!T[P][A[i]]) return Ans ;
      P = T[P][A[i]] ;
      Ans += End[P] ;
      }
      return Ans + Son[P] ;
      }
      int main () {
      M = Qread () , N = Qread () ;
      Clean(T , 0) , Clean(End , 0) , Clean (Son , 0) ;
      for (re int i = 1 ; i <= M; ++ i) {
      int Now = Qread () ;
      for (re int j = 0 ; j < Now ; ++ j) A[j] = Qread () ;
      Add (Now) ;
      }
      for (re int i = 1 ; i <= N; ++ i) {
      int Now = Qread () ;
      for (re int j = 0 ; j < Now ; ++ j) A[j] = Qread () ;
      printf ("%d\n" , Ask (Now)) ;
      }
      fclose (stdin) , fclose (stdout) ;
      return 0 ;
      }

Thanks!

【题解】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

    传送门 思路: 还是比较水的(不看题解不看书),用 vis 存字典树上的每个点是多少个单词的前缀,bo 来存每个点是多少个单词的结尾(坑点:会有很多相同的单词,不能只有 bool 来存).统计时:① ...

  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. 洛谷 2922 BZOJ 1590 [USACO08DEC]秘密消息Secret Message

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

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

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

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

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

随机推荐

  1. AI应用开发实战 - 从零开始搭建macOS开发环境

    AI应用开发实战 - 从零开始搭建macOS开发环境 本视频配套的视频教程请访问:https://www.bilibili.com/video/av24368929/ 建议和反馈,请发送到 https ...

  2. Scala实现Try with resources自动关闭IO

    在处理数据库连接或者输入输出流等场景时,我们经常需要写一些非常繁琐又枯燥乏味的代码来关闭数据库连接或输入输出流. 例如数据库操作: def update(sql: String)(conn: Conn ...

  3. 为什么分库分表使用2的N次方 一个字节用两位16进制

    你说说为神马表的总数.redis库的总数.HashMap的数量最好是2的N次方 数据在表库HashMap 落地时候都会跟总数取模,这个我们做个测试 假设数量是2的3次方就是8,即索引就是0-7 php ...

  4. python接口自动化(六)--发送get请求接口(详解)

    简介 如果想用python做接口测试,我们首先有不得不了解和学习的模块.它就是第三方模块:Requests. 虽然Python内置的urllib模块,用于访问网络资源.但是,它用起来比较麻烦,而且,缺 ...

  5. Python 闭包小记

    闭包就是能够读取其他函数内部变量的函数.例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数“.在本质上,闭包是将函数内部和函数外部连接起来 ...

  6. Entity Framework 查漏补缺 (一)

    明确EF建立的数据库和对象之间的关系 EF也是一种ORM技术框架, 将对象模型和关系型数据库的数据结构对应起来,开发人员不在利用sql去操作数据相关结构和数据.以下是EF建立的数据库和对象之间关系 关 ...

  7. 机器学习之决策树二-C4.5原理与代码实现

    决策树之系列二—C4.5原理与代码实现 本文系作者原创,转载请注明出处:https://www.cnblogs.com/further-further-further/p/9435712.html I ...

  8. 图像检索(6):局部敏感哈希索引(LSH)

    图像检索中,对一幅图像编码后的向量的维度是很高.以VLAD为例,基于SIFT特征点,设视觉词汇表的大小为256,那么一幅图像编码后的VLAD向量的长度为$128 \times 256 = 32768 ...

  9. java 并发多线程 锁的分类概念介绍 多线程下篇(二)

    接下来对锁的概念再次进行深入的介绍 之前反复的提到锁,通常的理解就是,锁---互斥---同步---阻塞 其实这是常用的独占锁(排它锁)的概念,也是一种简单粗暴的解决方案 抗战电影中,经常出现为了阻止日 ...

  10. 责任链模式 职责链模式 Chain of Responsibility Pattern 行为型 设计模式(十七)

    责任链模式(Chain of Responsibility Pattern) 职责链模式 意图 使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系 将这些对象连接成一条链,并沿着这 ...