hdu1251+字典树常用模板
这里只简单给出几个常用的字典树的模板,要看具体介绍的请看:传送门
注意:本题只有一组测试数据,处理到文件结束.
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+5;
char ch[15];
int tri[maxn][30];
int sum[maxn];
void insert(char * ch,int & cnt){
int len=strlen(ch);
int id=0;
for(int i=0;i<len;i++){
int tem=ch[i]-'a';
if(tri[id][tem]==0){
tri[id][tem]=++cnt;
} id=tri[id][tem];sum[id]++;
}
return ;
}
int find(char * ch){
int len=strlen(ch);
int id=0;
for(int i=0;i<len;i++){
int tem=ch[i]-'a';
if(tri[id][tem]==0){
return 0;
}
id=tri[id][tem];
}
return sum[id];
}
int main(){
char ch1;
int len=0;
int cnt=0;
while(ch1=getchar()){
if(ch1!='\n')
ch[len++]=ch1;
if(ch1=='\n'){
if(len==0)break; ch[len]='\0';
// puts(ch);
insert(ch,cnt);
len=0;
}
}
while(scanf("%s",ch)!=EOF){
//cout<<ch<<endl;
printf("%d\n",find(ch));
}
return 0;
}
建字典树:
void insert(char * ch,int & cnt){
int len=strlen(ch);
int id=0;
for(int i=0;i<len;i++){
int tem=ch[i]-'a';
if(tri[id][tem]==0){
tri[id][tem]=++cnt;
}
id=tri[id][tem];
sum[id]++;//可以用来查询以某字符串为前缀的字符串的数量 如hdu1251
}
vis[id]=1;//可以用来查询某字符串是否存在
return ;
}
查询:
int find(char * ch){
int len=strlen(ch);
int id=0;
for(int i=0;i<len;i++){
int tem=ch[i]-'a';
if(tri[id][tem]==0){
return 0;
}
id=tri[id][tem];
}
// return vis[id];
return sum[id];//也可以返回vis【id】,即判断当前字符串是否存在,存在返回一,不存在返回零
}
hdu1251+字典树常用模板的更多相关文章
- hdu1251 字典树trie 模板题
//字典树模板题.题意:给一个库,每次查询,求以之为前缀的单词数量. #include<iostream> #include<string> #include<vecto ...
- *HDU1251 字典树
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- HDU 1251 统计难题(字典树入门模板题 很重要)
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others)Total Submi ...
- hdu1251 字典树or map
一道字典树的题,不过看起来用map更为简单 传送门 题意: 给出一堆字符串构成一个字典,求字典里以某字符串为前缀的字符串有几个 思路: 输入字符串时把字符串的前缀全部存进map并标记次数 查询时直接输 ...
- hdu1251字典树递归算法
统计难题 Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 131070/65535 K (Java/Others) Total Subm ...
- HDU1251 字典树板子题
题意:中文题,统计以某字符串作为前缀的字符串个数 刚学字典树,理解起来十分简单,就是维护一个多叉树,这里用的是链表版本,后面就用的是数组版本了,个人更喜欢数组版本,这里的链表版本就因为 莫名其妙的错误 ...
- HDu-1247 Hat’s Words,字典树裸模板!
Hat's Words 题意:给出一张单词表求有多少个单词是由单词表里的两个单词组成,可以重复!按字典序输出这些单词. 思路:先建一个字典树,然后枚举每个单词,把每个单词任意拆分两部分然后查找. 目测 ...
- 统计难题---hdu1251字典树模板
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1251 node *head=(node*)malloc(sizeof(node)); for(int ...
- 字典树(Tire)模板
#include<stdio.h> #include<string.h> #include<stdlib.h> struct node { node *ne[]; ...
随机推荐
- idea spring boot docker 多项目 maven 编译
1,重复的model [INFO] Scanning for projects... [ERROR] [ERROR] Some problems were encountered while proc ...
- 使用Fiddler 4 调用WebService
Fiddler让我们这些.neter感到非常欣慰, 是用C#写出来的,它包含一个简单却功能强大的基于JScript .NET 事件脚本子系统,它的灵活性非常棒,可以支持众多的http调试任务,并且能够 ...
- AJAX完整操作
$("#btn1").click(function () { $.ajax({ url: "ajax/login.ashx", //请求访问的服务端地址 dat ...
- docker的核心概念和安装
里Dcoker的安装要求 我这里安装的是在vmware下的centos7 64位 并且通过模拟远程连接xshell 我在安装好之后就配置了静态ip,这里我就不多说怎么配置了 具体静态ip配置可以参考 ...
- Angular:在应用初始化时运行代码
想象一下,您的应用需要一些动态配置信息,这些信息在应用启动之前需要动态获取,并在应用运行中使用. 显然不能直接写道静态配置文件中,但是从客户端发出的请求又是一个异步请求,如何协调这个问题呢? 这里,我 ...
- 爬虫基础——HTTP基本原理
## 学习爬虫务必从了解请求网页的工作流程和网页的组成原理开始,不然直接去学爬虫操作像是请求库等等,大概率会知其然而不知其所以然(个人体会) URL和HTTP简介 URL(Uniform Resour ...
- Jmeter5.1.1+python调用python脚本
1.下载jython https://www.jython.org/downloads.html 下载Download Jython 2.7.0 - Standalone Jar : For embe ...
- Jmeter5.1.1创建一个http请求的压力测试
1.首先添加一个线程组,在线程组中,配置压力情况 2.然后在线程组中,添加取样器,添加http请求:配置web服务器协议(http/https).服务器名称或IP.端口号.请求方法.路径等参数 3.然 ...
- 用户未登录或Session超时时重定向到登录页,不那么简单
在网站开发中,我们经常有这样的场景出现: 情景1:对未登录的用户或没有权限的用户,当其想访问某个受限网页时,系统要能够自动转到登录页面. 情景2:对于用session保存用户状态的情况还有这样一种 ...
- react源码第一天
1.下载源码:github 16.7版本 2.找到笔记:https://react.jokcy.me/book/api/react.html#