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

门户资源分享网站模板云搜索引擎

门户资源分享网站模板,云搜索引擎,门户网站建设公司报价,网站建设要做哪些工作室题目: 维护一个字符串集合,支持两种操作: I x 向集合中插入一个字符串 x𝑥;Q x 询问一个字符串在集合中出现了多少次。 共有 N𝑁 个操作,所有输入的字符串总长度不超过 10^5,字符串仅…

题目:

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

  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;
}
http://www.khdw.cn/news/768.html

相关文章:

  • 湖北外贸网站建设深圳全网推广
  • 一个公司设计网站怎么做seo关键词优化案例
  • 网站实施方案企业网站建设的一般要素
  • wordpress优化宝塔公司网络优化方案
  • 物流公司做网站注重什么seo的方法有哪些
  • 湛江网站制作江网站制作武汉seo排名扣费
  • 慈溪网站建设哪家好成人专业技能培训机构
  • 网站策划图seo公司seo教程
  • 高港区住房和城乡建设局网站如何做好关键词的优化
  • 泰安哪里有做网站app的seo网络科技有限公司
  • 宿州网站建设哪家好seo优化运营
  • 做知乎网站社区要多少钱百度商店
  • 做网站没有数据如何写软文推广产品
  • wordpress做网站容易吗江阴网站优化公司
  • html建设网站网上怎么做推广
  • 做网站的公司有合肥全网推广
  • 扬中网络推广seo技术建站
  • 美国一个人做的网站网店运营实训报告
  • 视频网站视频预览怎么做的佛山网站设计实力乐云seo
  • 关键词优化搜索引擎seo方法图片
  • 网站浮动窗口怎么做学计算机哪个培训机构好
  • 网站建设与管理asp郑州seo优化哪家好
  • 网站建设有什么需求常见的线下推广渠道有哪些
  • 为什么做网站备案的人态度差搜图片百度识图
  • diy手工制作网站优化推广
  • 哪里有网站建设公司网站优化推广招聘
  • 做网站 贴吧百度热门排行榜
  • 合肥响应式网站设计seo关键词优化平台
  • 郑州市疫情防控指挥部电话seo学校培训课程
  • 网上商城模板华为seo诊断及优化分析