首页 > 其他分享 >板子大全

板子大全

时间:2024-09-25 09:23:52浏览次数:10  
标签:val int ed pos ret 板子 -- 大全

数据结构

01trie

const int M = 30;
const int N = 2e5 + 5;
int n, a[N]; 

struct Trie {
	int t[N * M][2], ed[N * M], dp[N * M], tot;
	inline void clear(void) {
		for (int i = 0; i <= tot; i++) t[i][0] = t[i][1] = ed[i] = dp[i] = 0;
		tot = 0;
	}
	
	Trie(void) { clear(); }
	inline void insert(int val) {
		int pos = 0;
		for (int i = M; i >= 0; i--) {
			int b = val >> i & 1;
			if (!t[pos][b]) t[pos][b] = ++tot;
			pos = t[pos][b];
		}
		ed[pos]++;
	}
	
	inline void remove(int val) {
		int pos = 0;
		for (int i = M; i >= 0; i--) {
			int b = val >> i & 1;
			if (!t[pos][b]) break;
			pos = t[pos][b];
		}
		if (ed[pos]) ed[pos]--;
	}
	
	inline int query_min(int val) {
		int pos = 0, ret = 0;
		for (int i = M; i >= 0; i--) {
			int b = val >> i & 1;
			if (t[pos][b]) pos = t[pos][b];
			else if (t[pos][1 - b]) ret = ret | (1 << i), pos = t[pos][1 - b];
			else break;
		} return ret;
	}
	
	inline int query_max(int val) {
		int pos = 0, ret = 0;
		for (int i = M; i >= 0; i--) {
			int b = val >> i & 1; b = 1 - b;
			if (t[pos][b]) pos = t[pos][b];
			else if (t[pos][1 - b]) ret = ret | (1 << i), pos = t[pos][1 - b];
			else break;
		} return ret;
	}
	
	inline void dfs(int pos) {
		int l = t[pos][0], r = t[pos][1];
		if (l) dfs(l), chkmax(dp[pos], dp[l]);
		if (r) dfs(r), chkmax(dp[pos], dp[r]);
		if (l && r) dp[pos]++;
		if (ed[pos]) dp[pos] = 1;
	}
} T;

标签:val,int,ed,pos,ret,板子,--,大全
From: https://www.cnblogs.com/EternalEpic/p/18430577

相关文章

  • 【干货】传统FTP不香了吗?FTP替代方案大全在这里
    FTP为何能风靡这么多年?‌‌FTP(FileTransferProtocol,文件传输协议)是一种用于在网络上进行文件传输的标准协议。FTP协议与操作系统无关,任何操作系统上的程序只要符合FTP协议,就可以相互传输数据。这么看起来,FTP还是挺好用的,为什么这篇文章咱们要说FTP替代方案呢?别急,咱们一个个来解......
  • P3478 STA-Station/换根 $dp$ 板子
    P3478[POI2008]STA-Stationlink给定一个\(n\)个点的树,请求出一个结点,使得以这个结点为根时,所有结点的深度之和最大。一个结点的深度之定义为该节点到根的简单路径上边的数量。对于全部的测试点,保证\(1\leqn\leq10^6\),\(1\lequ,v\leqn\),给出的是一棵树。思路:树......
  • Excel常用函数大全
    Excel常用函数介绍与示例应用在Excel中,函数是进行数据处理和分析的强大工具。对于新手来说,掌握一些基本的函数使用方法能够大大提升工作效率。以下是一份通俗易懂、适合新手的Excel函数使用方法总结:1.求和函数(SUM)功能:将选定区域的所有数值相加。语法:SUM(range),其中range为要求和......
  • 2000-2012年各地级市市长特征信息数据/市长特征信息大全数据
    2000-2012年各地级市市长特征信息数据1、时间:2000-2012年2、来源:百度搜索手工整理3、指标:省级政区代码、省级政区名称、地市级政区代码、地市级政区名称、年份、市长姓名、出生年份、出生月份、籍贯省份代码、籍贯省份名称、籍贯地市代码、籍贯地市名称、性别、民族、教育、......
  • Java面试题大全(全网最全,持续更新)初级(2)
    1.基础语法1.1.Java的数据类型有哪些?Java有两种数据类型:基本数据类型(PrimitiveTypes):包括byte、short、int、long、float、double、char、boolean。引用数据类型(ReferenceTypes):包括类、接口、数组等。1.2.final关键字有什么作用?final关键字可以用来修饰类、方......
  • 思科交换机命令大全,网络工程师必收藏!
    基本的命令行界面(CLI)导航思科交换机的CLI界面分为以下几种模式,每种模式提供不同的命令集:用户模式(UserEXECMode):此模式提供有限的查看命令,不能进行配置操作。用户模式的提示符通常以>结尾。例如:Switch>特权模式(PrivilegedEXECMode):此模式提供更多的监控和配置命......
  • eclispe的快捷键大全
    Ctrl+O快速显示OutLineCtrl+T快速显示当前类的继承结构Ctrl+W关闭当前EditerCtrl+K参照选中的Word快速定位到下一个Ctrl+E快速显示当前Editer的下拉列表(如果当前页面没有显示的用黑体表示)Ctrl+/(小键盘)折叠当前类中的所有代码Ctrl+×(小键盘)展开当前类中的所有代......
  • Java多线程大全
    文章目录简介多线程使用场景后台任务:多线程的基本概念Java程序是如何运行的?线程的创建和启动1、线程的创建和启动1.1、继承Thread类1.2、实现Runnable接口2、线程的调度与控制2.1、线程优先级2.2、Thread.sleep3、Thread中几个方法、......
  • PCB双面制造解析,你的板子是这么做出来的
    图形电镀工艺是制造高质量电路板的关键步骤。这一过程不仅需要精确的控制,还涉及到多个复杂的化学和物理操作。一、图形电镀工艺流程首先,让我们从最基本的步骤开始:电路板的制作始于一块覆有铜箔的板材。接下来,根据设计要求,板材会被裁剪并冲钻出基准孔,以确保后续工序的精确......
  • Docker常用命令大全
    文章目录Docker常用命令大全一、引言二、Docker命令分类1、镜像相关命令1.1、查看本地所有镜像1.2、搜索镜像1.3、拉取镜像1.4、删除镜像2、容器相关命令2.1、运行容器2.2、查看容器列表2.3、停止容器2.4、删除容器2.5、进入容器3、其他常用命令3.1、查看Docker版本......