【01trie】CF1851F

news2024/11/29 12:53:17

Problem - F - Codeforces

题意:

 

 

思路:

首先最大异或对可以用01trie解决

trie树入门_lamentropetion的博客-CSDN博客 

ai xor x 和 aj xor x 都必须为1

因此可以转换为 ai 和 aj 最小异或对问题

改一下01trie的板子即可

主要修改部分在query上

p是 ai 的 01串 ,x应与 ai 相反

id[p] 表示 idx 为 p 的01串(数字)对应的下标值

Code:

#include <bits/stdc++.h>

#define int long long

using namespace std;

const int mxn=2e5+10;

int N,K;
int idx=0;
int a[mxn]; 
int tr[mxn*30][2],id[mxn*30];

void insert(int x){
	int u=a[x];
	int p=0;
	for(int j=K-1;j>=0;j--){
		int bit=((u>>j)&1);
		if(!tr[p][bit]) tr[p][bit]=++idx;
		p=tr[p][bit];
	}
	id[p]=x;//该idx对应的数的下标 
}
array<int,4> query(int x){
	int u=a[x];
	int p=0,val=0,t=0;
	for(int j=K-1;j>=0;j--){
		int bit=(u>>j)&1;
		if(tr[p][bit]){
			val|=(1<<j);
			if(bit==0) t|=(1<<j);
			p=tr[p][bit];
		}else p=tr[p][bit^1];
	}
	return array<int,4>{val,id[p],x,t};
}
void init(){
	for(int i=0;i<=idx;i++){
		for(int j=1;j>=0;j--) tr[i][j]=0;
		id[i]=0;
	}
	idx=0;
}
void solve(){
	cin>>N>>K;
	init();
	for(int i=1;i<=N;i++) cin>>a[i];
	array<int,4> ans{-1};
	insert(1);
	for(int i=2;i<=N;i++){
		ans=max(ans,query(i));
		insert(i);
	}
	cout<<ans[1]<<" "<<ans[2]<<" "<<ans[3]<<'\n';
}
signed main(){
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	int __=1;cin>>__;
	while(__--)solve();return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/792919.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何把视频中的背景删掉,AI抠像,瞬间换背景!

不用绿幕也能快速抠除视频背景。一个可以去除视频背景的AI智能抠像工具&#xff0c;上传视频后会自动去除背景&#xff0c;支持单人、多人等各类场景&#xff0c;智能扫描识别&#xff0c;发丝级细节处理&#xff0c;快捷高效。 随着AI 抠像技术的不断成熟和普及&#xff0c;我…

5-7月大更新!EasyOps®全平台34+新特性齐上线~

为了提供更好的产品使用体验&#xff0c;优维从未停止更新升级的脚步。在5-7月份&#xff0c;EasyOps全平台更新上线34新功能&#xff0c;涉及Hyperlnsight超融合监控、CMDB、DevOps、AutoOps、ITSM、公共服务&#xff0c;在不断的技术创新过程中&#xff0c;进一步加速IT运维效…

存算一体化(Processing in Memory, PIM)入门

一、 存算一体化 概念&#xff1a; 简单来说就是将存储资源中嵌入计算能力&#xff0c;以新的运算架构进行二维和三维矩阵乘法/加法运算。这样减少了数据频繁移动带来的延迟和能耗方面的开销。 背景&#xff1a; 虽然多核&#xff08;例如CPU&#xff09;/众核&#xff08;例…

视频监控综合管理平台EasyCVR多分屏默认播放协议的配置优化

视频监控综合管理平台EasyCVR具备视频融合汇聚能力&#xff0c;TSINGSEE青犀视频平台基于云边端一体化架构&#xff0c;可支持多协议、多类型设备接入&#xff0c;包括&#xff1a;NVR、IPC、视频编码器、无人机、车载设备、智能手持终端、移动执法仪等。国标GB28181视频平台Ea…

Mysql执行计划字段解释

文章目录 一、前言二、如何查看执行计划三、执行计划各字段解释四、select_type4.1、SIMPLE&#xff08;简单查询&#xff09;4.1.1、简单的单表查询4.1.2、多表连接查询 4.2、PRIMARY&#xff08;主查询&#xff09;4.2.1、包含复杂子查询的外层查询4.2.2、UNION语句中的第一个…

55寸透明屏有哪些主要特点?

55寸透明屏是一种新型的显示技术&#xff0c;它具有透明度高、色彩鲜艳、清晰度高等特点&#xff0c;可以广泛应用于商业展示、户外广告、智能家居等领域。 首先&#xff0c;55寸透明屏的透明度非常高&#xff0c;可以达到80%以上&#xff0c;这意味着即使屏幕开启&#xff0c;…

裁员 10%,暴跌 14%,这家 IT 独角兽正在被抛弃!

流量一跌再跌&#xff0c;Stack Overflow 简直被狠狠地上了一课&#xff01; 3 月份 Stack Overflow 的流量下降了近 14%。该公司的 CEO 压力空前&#xff0c;甚至昨天决定裁员 10%&#xff01; 平均每月下降6%&#xff0c;上月直接跌了近14% 开发人员越来越多地从 AI 聊天机器…

Hive数据仓库

数据仓库概念与起源发展由来 数仓概念 数据仓库&#xff08;英语&#xff1a;Data Warehouse&#xff0c;简称数仓、DW&#xff09;&#xff0c;是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面相分析的集成化数据环境&#xff0c;分析结果为企业提供决策支持…

结构化思维:高效能项目经理人的底层能力

大家好&#xff0c;我是老原。 我们经常会说「高效能」&#xff0c;那怎么成为高效能人士&#xff1f;其实除了拼体力和心力以外&#xff0c;高效能更重要的是脑力&#xff0c;这里的脑力不是指智力&#xff0c;而是结构化思维。 随着你在职场中不断成长和进阶&#xff0c;级…

springboot 整合tx-mybaits 实现crud操作

一 操作案例 1.1 工程结构 1.2 pom文件的配置 <!--spring boot的依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId…

【防火墙】iptables防火墙(一)

防火墙具有隔离功能 主要部署在网络边缘或者主机边缘&#xff0c;防火墙的主要作用是决定哪些数据可以被外网访问&#xff0c;哪些数据可以进入内网访问 网络层&#xff08;路由器&#xff09;&#xff1a;数据的转发 安全技术 1.入侵监测系统&#xff1a;在检测到威胁&…

导出为PDF加封面且分页处理dom元素分割

文章目录 正常展示页面导出后效果代码 正常展示页面 导出后效果 代码 组件内 <template><div><div class"content" id"content" style"padding: 0px 20px"><div class"item"><divstyle"height: 160…

电压放大器在管道缺陷检测中应用有哪些

管道是一种重要的输送工业介质的设施&#xff0c;广泛应用于石油、化工、水利等领域。然而&#xff0c;由于长期使用和外界环境因素等原因&#xff0c;管道内部常会出现各种缺陷和损伤&#xff0c;如腐蚀、裂纹、磨损等&#xff0c;这些问题如果得不到及时发现和修复&#xff0…

基于vue实现权限控制,动态渲染菜单栏

Vue菜单权限动态路由 实现原理&#xff1a;用户登录&#xff0c;服务端返回相关权限&#xff0c;进行持久化存储&#xff0c;筛选动态路由&#xff0c;同时菜单栏也需动态渲染 静态路由 静态路由&#xff0c;也叫常量路由&#xff0c;即所有角色都可以访问到的路由界面。如:…

手把手移植 simpleFOC (二)

目录 前言 1、建立 arduino文件夹&#xff0c;如图&#xff1a; 2、提取必要的文件 二、修改源码 1.屏蔽arduino.h、wiring.h里代码 2.修改Print.cpp文件 三&#xff0c;编译 总结 一、前言 本章主要实现 simpleFoc 里的 Serial.print功能&#xff0c;建立setup、loop函…

Games101学习笔记 - 变换矩阵基础

二维空间下的变换 缩放矩阵 缩放变换: 假如一个点&#xff08;X,Y&#xff09;。x经过n倍缩放&#xff0c;y经过m倍缩放&#xff0c;得到的新点&#xff08;X1&#xff0c;Y1&#xff09;&#xff1b;那么新点和远点有如下关系&#xff0c;X1 n*X, Y1 m*Y写成矩阵就是如下…

Matlab----下载和安装教程

Matlab----下载 文件中有以下文件 Matlab----安装 步骤1&#xff1a;打开安装软件 步骤2&#xff1a;运行安装软件 在matlab 2018的文件夹下找到setup&#xff0c;选中右键以管理员身份运行。 步骤3 选择使用文件安装密钥&#xff0c;然后点击下一步。 步骤4 是否接收…

C语言---动态内存管理

C语言—动态内存管理 文章目录 C语言---动态内存管理1. 为什么要进行动态内存分配1.1 动态内存管理所在的区域 2. 动态内存函数的介绍2.1 malloc2.1.1 malloc语法2.1.2 malloc具体实例 2.2 free2.2.1 free语法2.2.2 free具体实例 2.3 calloc2.3.1 calloc语法2.3.2 calloc具体实…

基于Linux操作系统中的MySQL数据库SQL语句(三十一)

MySQL数据库SQL语句 目录 一、SQL语句类型 1、DDL 2、DML 3、DCL 4、DQL 二、数据库操作 1、查看 2、创建 2.1、默认字符集 2.2、指定字符集 3、进入 4、删除 5、更改 6、练习 三、数据表操作 &#xff08;一&#xff09;数据类型 1、数值类型 1.1、TINYINT …

【C++】总结3

文章目录 1.类的访问限定符2.封装3.类对象的存储方式4.为什么要进行内存对齐&#xff1f;结构体怎么对齐&#xff1f;5.如何让结构体按照指定的对齐参数进行对齐6.如何知道结构体中某个成员相对于结构体起始位置的偏移量7.C有哪几种构造函数8.类的六个默认成员函数9.构造函数10…