【封装】Trie
#include<cstdio>
const int N = 1e6 + 5;
struct Trie{
int root, id;
bool bit[32];
struct Node{
int val, siz, ch[2];
Node(){ ch[0] = ch[1] = -1, val = siz = 0; }
}node[N];
void get(int x){
for(int i = 0; i < 32; ++i, x >>= 1) bit[i] = x & 1;
}
void init(){
for(int i = 0; i <= id; ++i){
node[i].ch[0] = node[i].ch[1] = -1;
node[i].val = node[i].siz = 0;
}
id = root = 0;
}
void insert(int x){
get(x);
int u = root;
for(int i = 31; i >= 0; --i){
if(node[u].ch[bit[i]] == -1) node[u].ch[bit[i]] = ++id;
u = node[u].ch[bit[i]];
++node[u].siz;
}
node[u].val = x;
}
int find(int x){ // 返回与x异或最大的数
get(x);
int u = root;
for(int i = 31; i >= 0; --i){
int s1 = node[u].ch[!bit[i]], s2 = node[u].ch[bit[i]];
if(s1 != -1 && node[s1].siz > 0) u = s1;
else if(s2 != -1 && node[s2].siz > 0) u = s2;
else return x; // 注意根据需要调整返回值
}
return node[u].val;
}
void del(int x){
get(x);
int u = root;
for(int i = 31; i >= 0; --i){
u = node[u].ch[bit[i]];
--node[u].siz;
}
}
}trie;
【封装】Trie的更多相关文章
- Trie(字典树)解析及其在编程竞赛中的典型应用举例
摘要: 本文主要讲解了Trie的基本思想和原理,实现了几种常见的Trie构造方法,着重讲解Trie在编程竞赛中的一些典型应用. 什么是Trie? 如何构建一个Trie? Trie在编程竞赛中的典型应用 ...
- 洛谷.3065.第一!First!(Trie 拓扑)
题目链接 \(Description\) 给出n个字符串,问重定义英文字符的顺序(即字典序),有哪些单词可能排在第一 \(Solution\) 一个单词想要排在第一,首先是没有其它字符串是它的前缀.那 ...
- python Trie树和双数组TRIE树的实现. 拥有3个功能:插入,删除,给前缀智能找到所有能匹配的单词
#coding=utf- #字典嵌套牛逼,别人写的,这样每一层非常多的东西,搜索就快了,树高26.所以整体搜索一个不关多大的单词表 #还是O(). ''' Python 字典 setdefault() ...
- 学习笔记:安装swig+用SWIG封装C++为Python模块+SWIG使用说明
这段时间一直在摸索swing,用它来封装C++代码来生成python脚步语言.并总结了swing从安装到配置再到代码封装编译生成动态库的整个过程,下面这篇文章都是我在实际的运用中的一些经验总结,分享给 ...
- Trie树的插入,查前缀,查单词,删前缀和删单词。
这个Trie原先用C++就敲得很熟了,看了蓝桥杯的视频后学会把一个功能这样封装起来,以后用的时候就很爽可以直接调用了,所以就用Java写了: public class Trie { private f ...
- 数据结构 | 30行代码,手把手带你实现Trie树
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是算法和数据结构专题的第28篇文章,我们一起来聊聊一个经典的字符串处理数据结构--Trie. 在之前的4篇文章当中我们介绍了关于博弈论的 ...
- 算法总结篇---字典树(Trie)
目录 写在前面 具体实现 引例: 引例代码: 例题 Phone List Solution: The XOR Largest Pair Solution L语言 Solution: 写在前面 字典树是 ...
- [C#] 简单的 Helper 封装 -- RegularExpressionHelper
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- iOS开发之App间账号共享与SDK封装
上篇博客<iOS逆向工程之KeyChain与Snoop-it>中已经提到了,App间的数据共享可以使用KeyChian来实现.本篇博客就实战一下呢.开门见山,本篇博客会封装一个登录用的SD ...
- Ajax实现原理,代码封装
都知道实现页面的异步操作需要使用Ajax,那么Ajax到是怎么实现异步操作的呢? 首先需要认识一个对象 --> XMLHttpRequest 对象 --> Ajax的核心.它有许多的属性和 ...
随机推荐
- python爬虫抓取图片
一.什么是爬虫 什么是爬虫?爬虫是蜘蛛么?是八爪鱼么?nonono. 爬虫是指请求网站并获取数据的自动化程序,又称网页蜘蛛或网络机器,最常用领域是搜索引擎,最常用的工具是八爪鱼. 它的基本流程分为以下 ...
- 关于package-lock.json
前言 上篇文章我们了解了package.json,一般与它同时出现的还有一个package-lock.json,这两者又有什么关系呢?下面一起来了解吧. 介绍 package-lock.json 它会 ...
- SpringBoot+Mybatis-Plus+Mysql的保姆级搭建
本文通过简单的示例代码和说明,让读者能够了解Mybatis-Plus+Mysql的简单使用 必须说明的是,本文有部分内容是为了后续的微服务写的,所以如果只想用Mybatis-Plus的话,直接使用ba ...
- centos7.X安装mysql5.7 – 东凭渭水流
1.下载mysql5.7 可以使用windows下载好后上传至Linux.网络条件好的推荐使用 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/m ...
- Python Web:Django、Flask和FastAPI框架对比
Django.Flask和FastAPI是Python Web框架中的三个主要代表.这些框架都有着各自的优点和缺点,适合不同类型和规模的应用程序. Django: Django是一个全功能的Web框架 ...
- 52条SQL语句,性能优化!
52条SQL语句,性能优化! SQL语句性能优化 1, 对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2,应尽量避免在 where 子句中对 ...
- Xshell7 / Xftp7 永久免费,官网直连下载地址
主要目的是让大家随时随地从官网下载Xshell和Xftp免费版(个人/家庭/学校免费) 最新变动:官方目前仅提供最新版以及上一个版本的软件下载!其他版本不提供下载 免费版5版本(最后一个版本,无任何限 ...
- 一篇文章让你弄懂分布式一致性协议Paxos
一.Paxos协议简介 Paxos算法由Leslie Lamport在1990年提出,它是少数在工程实践中被证实的强一致性.高可用.去中心的分布式协议.Paxos协议用于在多个副本之间在有限时间内对某 ...
- MinIO分布式部署
目录 先决条件 网络和防火墙 网络 防火墙 负载均衡 顺序的主机名 驱动器要求 XFS格式性能最优 最小IO 顺序的驱动器名 任意迁移 时间同步 考虑 相同的硬软件环境 存储容量规划 推荐的操作系统 ...
- 教你用API插件开发一个AI快速处理图片小助手
本文分享自华为云社区<[案例教学]华为云API图引擎服务 GES的便捷性-AI帮助快速处理图片小助手>,作者:华为云PaaS服务小智. 调用云服务.API.SDK.调试.查看-- &quo ...