Trie树入门:HDU 1251

2024-06-08 23:58
文章标签 入门 hdu trie 1251

本文主要是介绍Trie树入门:HDU 1251,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这题搞了几个小时,从昨天看题目然后从刘汝佳那本训练指导中看了Trie树的插入模板,然后就想这题怎么查找,然后今早竟然做了卡了好久,因为书中是给二维数组的,而这题无限输入啊,直到文件结束,我就在想用vector代替数组,但是实行起来出错了。然后又用map代替,样例对了,可是提交还是错了。然后又换成二维数组,上线从4000000一直提交直降到400000才没有内存超出,可是还是wrong了,再在没有内存超出,说明这二维数组上线400000已经够了,应该是代码问题了。可是也没有发现哪里错啊。唉……提交多次都是wrong,无语了。后面看了一下输入输出,唉……然后改成gets就对了,尼玛真无语……从头搞到尾,原来是输入输出问题……

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<queue>
#include<set>
#include<cmath>
#include<bitset>
#define mem(a,b) memset(a,b,sizeof(a))
#define lson i<<1,l,mid
#define rson i<<1|1,mid+1,r
#define INF 510010
#define maxn 400010
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
int ch[maxn][27]; //节点编号
int sz; //字典树的节点个数
int val[maxn]; //节点的值,为1说明新增一个字符串
void init()  //初始化
{sz=1;memset(ch,0,sizeof(ch));memset(val,0,sizeof(val));
}
int idx(char c)
{return c-'a';
}
void insert(char *s)
{int u=0,i,c,l=strlen(s);for(i=0; i<l; i++){c=idx(s[i]);if(!ch[u][c]) ch[u][c]=sz++;u=ch[u][c];val[u]++;}
}
int query(char *s)
{int u=0,i,c,l=strlen(s);for(i=0; i<l; i++){c=idx(s[i]);if(!ch[u][c]) return 0;u=ch[u][c];}return val[u];
}
int main()
{char s[12];init();while(gets(s),s[0]!='\0')insert(s);while(gets(s))printf("%d\n",query(s));
}



这篇关于Trie树入门:HDU 1251的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1043680

相关文章

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能

《POI从入门到实战轻松完成EasyExcel使用及Excel导入导出功能》ApachePOI是一个流行的Java库,用于处理MicrosoftOffice格式文件,提供丰富API来创建、读取和修改O... 目录前言:Apache POIEasyPoiEasyExcel一、EasyExcel1.1、核心特性

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Python FastAPI入门安装使用

《PythonFastAPI入门安装使用》FastAPI是一个现代、快速的PythonWeb框架,用于构建API,它基于Python3.6+的类型提示特性,使得代码更加简洁且易于绶护,这篇文章主要介... 目录第一节:FastAPI入门一、FastAPI框架介绍什么是ASGI服务(WSGI)二、FastAP

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

poj 3974 and hdu 3068 最长回文串的O(n)解法(Manacher算法)

求一段字符串中的最长回文串。 因为数据量比较大,用原来的O(n^2)会爆。 小白上的O(n^2)解法代码:TLE啦~ #include<stdio.h>#include<string.h>const int Maxn = 1000000;char s[Maxn];int main(){char e[] = {"END"};while(scanf("%s", s) != EO

hdu 2093 考试排名(sscanf)

模拟题。 直接从教程里拉解析。 因为表格里的数据格式不统一。有时候有"()",有时候又没有。而它也不会给我们提示。 这种情况下,就只能它它们统一看作字符串来处理了。现在就请出我们的主角sscanf()! sscanf 语法: #include int sscanf( const char *buffer, const char *format, ... ); 函数sscanf()和

hdu 2602 and poj 3624(01背包)

01背包的模板题。 hdu2602代码: #include<stdio.h>#include<string.h>const int MaxN = 1001;int max(int a, int b){return a > b ? a : b;}int w[MaxN];int v[MaxN];int dp[MaxN];int main(){int T;int N, V;s