当前位置: 首页 > news >正文

数据结构——Trie

题目:

维护一个字符串集合,支持两种操作:

  1. I x 向集合中插入一个字符串 x𝑥;
  2. Q x 询问一个字符串在集合中出现了多少次。

共有 N𝑁 个操作,所有输入的字符串总长度不超过 10^5,字符串仅包含小写英文字母。

输入格式

第一行包含整数 N𝑁,表示操作数。

接下来 N𝑁 行,每行包含一个操作指令,指令为 I x 或 Q x 中的一种。

输出格式

对于每个询问指令 Q x,都要输出一个整数作为结果,表示 x𝑥 在集合中出现的次数。

每个结果占一行。

数据范围

1≤N≤2∗10^4

解题分析:

本题是Acwing上的一道模板题,Trie树又叫字典树,就是一个像字典一样的树,可以帮助我们快速查找一个字符串是否出现过。通常采用树的边来代表字母,从根节点到树中的某一个结点表示一个字符串,以下是一张OI Wiki的树图:

在图中,aa,aba,ba,caaa,cab,cba,cc均是字符串。我们通常会在每个字符串末尾打上一个标记,用于查询过程中判断到这个标记时,就可读取为一个字符串,从而达到“字典”的效果。

C++实现如下:

#include <iostream>using namespace std;const int N = 100010;int son[N][26], cnt[N], idx;
char str[N];void insert(char *str)
{int p = 0;  for(int i = 0; str[i]; i++){int u = str[i] - 'a'; if(!son[p][u]) son[p][u] = ++idx;   p = son[p][u];  }cnt[p]++;  
}int query(char *str)
{int p = 0;for(int i = 0; str[i]; i++){int u = str[i] - 'a';if(!son[p][u]) return 0;  p = son[p][u]; }return cnt[p];  
}int main()
{int m;cin >> m;while(m--){char op[2];scanf("%s%s", op, str);if(*op == 'I') insert(str);else printf("%d\n", query(str));}return 0;
}

相关文章:

数据结构——Trie

题目&#xff1a; 维护一个字符串集合&#xff0c;支持两种操作&#xff1a; I x 向集合中插入一个字符串 x&#x1d465;&#xff1b;Q x 询问一个字符串在集合中出现了多少次。 共有 N&#x1d441; 个操作&#xff0c;所有输入的字符串总长度不超过 10^5&#xff0c;字符串仅…...

前端根据目录生成模块化路由routes

根据约定大于配置的逻辑&#xff0c;如果目录结构约定俗成&#xff0c;前端是可以根据目录结构动态生成路由所需要的 route 结构的&#xff0c;这个过程是要在编译时 进行&#xff0c;生成需要的代码&#xff0c;保证运行时的代码正确即可 主流的打包工具都有对应的方法读取文…...

Blender新手入门笔记收容所(一)

基础篇 基础操作 视角的控制 控制观察视角&#xff1a;鼠标中键平移视图&#xff1a;Shift鼠标中键缩放视图&#xff1a;滚动鼠标中键滚轮 选中物体后&#xff1a;移动物体快捷键G&#xff0c;移动后单击鼠标就会定下来。 进入移动状态后&#xff1a;按Y会沿着Y轴移动进入移动…...

修改服务器挂载目录

由于我们的项目通常需要挂载一个大容量的数据盘来存储文件数据&#xff0c;所以我们每台服务器都需要一个默认的挂载目录来存放这些数据&#xff0c;但是由于我们的误操作&#xff0c;导致挂载目录名字建错了&#xff0c;这时候后端就读不到挂载目录了&#xff0c;那我们我们的…...

Linux+InternStudio 关卡

ssh连接 端口映射 本地...

如何提升美国Facebook直播的整体体验?

Facebook作为全球最大的社交媒体平台之一&#xff0c;提供了直播功能&#xff0c;用户可以实时分享生活、见解和创意。许多商家通过美国Facebook直播来获取更多客户&#xff0c;但直播时可能会遇到网络卡顿的问题&#xff0c;导致观看体验不佳。本文将探讨如何解决这个问题&…...

flutter项目与原生项目相比,性能比较差的原因

Flutter 项目相对于原生项目有时会表现出性能上的差异&#xff0c;主要原因如下&#xff1a; 1. 框架层的额外开销 Flutter 是一个跨平台框架&#xff0c;它通过 Dart 语言编写代码&#xff0c;并使用 Flutter 引擎将其编译成原生代码。这种跨平台的抽象层不可避免地会引入一…...

第二周:李宏毅机器学习笔记

第二周学习周报 摘要Abstract一、深度学习1.Backpropagation&#xff08;反向传播&#xff09;1.1 链式法则1.2 Forward pass&#xff08;前向传播&#xff09;1.3 Backward pass&#xff08;向后传播&#xff09;1.4 总结 2. Regression&#xff08;神奇宝贝案例&#xff09;2…...

搜维尔科技:【研究】Scalefit是一款可在工作场所自动处理3D姿势分析结果的软件

Scalefit是一款可在工作场所自动处理 3D 姿势分析结果的软件。这甚至可以在衡量员工的同时发生。然后&#xff0c;Scalefit 根据国际标准对姿势、压缩力和关节力矩进行分析和可视化。 3D姿势分析 如今&#xff0c;Xsens 技术可让您快速测量工作场所员工的态度。一套带有 17 个…...

网络编程:各协议头(数据报格式)

一、mac头 二、ip头 protocol——tcp/udp &#xff08;7&#xff09;TTL——生存时间 三、tcp头 四、udp头...

SpringBoot报错:The field file exceeds its maximum permitted size of 1048576 bytes

报错信息 The field file exceeds its maximum permitted size of 1048576 bytes原因是 SpringBoot内嵌的 tomcat 默认的所有上传的文件大小为 1MB 解决办法 修改配置 spring:servlet:multipart:max-file-size: 50MBmax-request-size: 50MB或者 spring.servlet.multipart.…...

C++的介绍与认识

目录 前言 1.什么是C 2.C的发展历史 3.C参考文档 4.C重要性 4.1C特点 4.2编程语言排行榜 4.3 C的应用领域 5.C学习指南 1. 基础知识 2. 面向对象编程&#xff08;OOP&#xff09; 3. 泛型编程 4. 标准库&#xff08;STL&#xff09; 结束语 前言 学习了C语言的知识…...

Spark源码详解

https://www.cnblogs.com/huanghanyu/p/12989067.html#_label3_3...

浅尝Apache Mesos

文章目录 1. Mesos是什么2. 共享集群3. Apache Mesos3.1 Mesos主节点3.2 Mesos代理3.3 Mesos框架 4. 资源管理4.1 资源提供4.2 资源角色4.3 资源预留4.4 资源权重与配额 5. 实现框架5.1 框架主类5.3 实现执行器 6. 小结参考 1. Mesos是什么 Mesos是什么&#xff0c;Mesos是一个…...

buuctf题目讲解-1

一眼就解密 ZmxhZ3tUSEVfRkxBR19PRl9USElTX1NUUklOR30 flag{THEFLAGOFTHISSTRING} base家族 base64 加密原理&#xff1a; 明文&#xff1a;abc 去找ascii码的二进制形式 a-->97-→01100001 &#xff08;二进制为8位如果不足8位则在最左边补0至8位&#xff09; b-→…...

软件测试学习之-ADB命令

ADB命令 adb工具即Android Debug Bridge&#xff08;安卓调试桥&#xff09; tools。它就是一个命令行窗口&#xff0c;用于通过电脑端与模拟器或者真实设备交互。在某些特殊的情况下进入不了系统&#xff0c;adb就派上用场啦&#xff01; Android程序的开发通常需要使用到一…...

Redis的入门导读(一)

目录 单机架构 分布式系统 个人总结 一.Redis的介绍 二.Redis特性 三.Redis的快原因 四.Redis的应用场景 五.Redis的总结 由于Redis和分布式系统息息相关&#xff0c;因此我们需要先了解一下&#xff0c;分布式系统&#xff01; 接下来就是分布式系统的演化过程。 单…...

H5与小程序:两者有何不同?

H5&#xff0c;即HTML5&#xff0c;是构建Web内容的一种语言描述方式&#xff0c;也是互联网的下一代标准&#xff0c;被认为是互联网的核心技术之一。HTML5是在HTML4.01的基础上进行了一定的改进后的规范&#xff0c;用户在使用任何手段进行网页浏览时看到的内容原本都是HTML格…...

计算机视觉、目标检测、视频分析的过去和未来:目标检测从入门到精通 ------ YOLOv8 到 多模态大模型处理视觉基础任务

文章大纲 计算机视觉项目的关键步骤计算机视觉项目核心内容概述步骤1: 确定项目目标步骤2:数据收集和数据标注步骤3:数据增强和拆分数据集步骤4:模型训练步骤5:模型评估和模型微调步骤6:模型测试步骤7:模型部署常见问题目标检测入门什么是目标检测目标检测算法的分类一阶…...

7月10日学习打卡,环形链表+栈OJ

前言 大家好呀&#xff0c;本博客目的在于记录暑假学习打卡&#xff0c;后续会整理成一个专栏&#xff0c;主要打算在暑假学习完数据结构&#xff0c;因此会发一些相关的数据结构实现的博客和一些刷的题&#xff0c;个人学习使用&#xff0c;也希望大家多多支持&#xff0c;有…...

【网络安全产品大调研系列】2. 体验漏洞扫描

前言 2023 年漏洞扫描服务市场规模预计为 3.06&#xff08;十亿美元&#xff09;。漏洞扫描服务市场行业预计将从 2024 年的 3.48&#xff08;十亿美元&#xff09;增长到 2032 年的 9.54&#xff08;十亿美元&#xff09;。预测期内漏洞扫描服务市场 CAGR&#xff08;增长率&…...

C++ 基础特性深度解析

目录 引言 一、命名空间&#xff08;namespace&#xff09; C 中的命名空间​ 与 C 语言的对比​ 二、缺省参数​ C 中的缺省参数​ 与 C 语言的对比​ 三、引用&#xff08;reference&#xff09;​ C 中的引用​ 与 C 语言的对比​ 四、inline&#xff08;内联函数…...

rnn判断string中第一次出现a的下标

# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

三分算法与DeepSeek辅助证明是单峰函数

前置 单峰函数有唯一的最大值&#xff0c;最大值左侧的数值严格单调递增&#xff0c;最大值右侧的数值严格单调递减。 单谷函数有唯一的最小值&#xff0c;最小值左侧的数值严格单调递减&#xff0c;最小值右侧的数值严格单调递增。 三分的本质 三分和二分一样都是通过不断缩…...

Ubuntu Cursor升级成v1.0

0. 当前版本低 使用当前 Cursor v0.50时 GitHub Copilot Chat 打不开&#xff0c;快捷键也不好用&#xff0c;当看到 Cursor 升级后&#xff0c;还是蛮高兴的 1. 下载 Cursor 下载地址&#xff1a;https://www.cursor.com/cn/downloads 点击下载 Linux (x64) &#xff0c;…...

数学建模-滑翔伞伞翼面积的设计,运动状态计算和优化 !

我们考虑滑翔伞的伞翼面积设计问题以及运动状态描述。滑翔伞的性能主要取决于伞翼面积、气动特性以及飞行员的重量。我们的目标是建立数学模型来描述滑翔伞的运动状态,并优化伞翼面积的设计。 一、问题分析 滑翔伞在飞行过程中受到重力、升力和阻力的作用。升力和阻力与伞翼面…...

[特殊字符] Spring Boot底层原理深度解析与高级面试题精析

一、Spring Boot底层原理详解 Spring Boot的核心设计哲学是约定优于配置和自动装配&#xff0c;通过简化传统Spring应用的初始化和配置流程&#xff0c;显著提升开发效率。其底层原理可拆解为以下核心机制&#xff1a; 自动装配&#xff08;Auto-Configuration&#xff09; 核…...

Modbus转Ethernet IP深度解析:磨粉设备效率跃升的底层技术密码

在建材矿粉磨系统中&#xff0c;开疆智能Modbus转Ethernet IP网关KJ-EIP-101的应用案例是一个重要的技术革新。这个转换过程涉及到两种主要的通信协议&#xff1a;Modbus和Ethernet IP。Modbus是一种串行通信协议&#xff0c;广泛应用于工业控制系统中。它简单、易于部署和维护…...

MySQL技术内幕1:内容介绍+MySQL编译使用介绍

文章目录 1.整体内容介绍2.下载编译流程2.1 安装编译工具和依赖库2.2 下载编译 3.配置MySQL3.1 数据库初始化3.2 编辑配置文件3.3 启动停止MySQL3.4 登录并修改密码 1.整体内容介绍 MySQL技术系列文章将从MySQL下载编译&#xff0c;使用到MySQL各组件使用原理源码分析&#xf…...

LeetCode - 53. 最大子数组和

目录 题目 Kadane 算法核心思想 Kadane 算法的步骤分析 读者可能的错误写法 正确的写法 题目 53. 最大子数组和 - 力扣&#xff08;LeetCode&#xff09; Kadane 算法核心思想 定义状态变量: currentSum: 表示以当前元素为结束的子数组的最大和。 maxSum: 记录全局最大…...