中国石油大学 Chip Factory(字典树处理异或最大值)

2024-02-10 16:48

本文主要是介绍中国石油大学 Chip Factory(字典树处理异或最大值),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

9264: Chip Factory

时间限制: 5 Sec  内存限制: 128 MB
提交: 268  解决: 61
[提交] [状态] [讨论版] [命题人:admin]

题目描述

John is a manager of a CPU chip factory, the factory produces lots of chips everyday. To manage large amounts of products, every processor has a serial number. More specifically, the factory produces n chips today, the i-th chip
produced this day has a serial number si.
At the end of the day, he packages all the chips produced this day, and send it to wholesalers. More specially, he writes a checksum number on the package, this checksum is defined as below:

which i, j, k are three different integers between 1 and n. And  is symbol of bitwise XOR.
Can you help John calculate the checksum number of today?

 

输入

The first line of input contains an integer T indicating the total number of test cases.
The first line of each test case is an integer n, indicating the number of chips produced today. The next line has n integers s1 , s2 ,..., sn , separated with single space, indicating serial number of each chip.

  • 1≤T≤1000
  • 3≤n≤1000
  • 0≤s i≤109
  • There are at most 10 testcases with n > 100

 

输出

For each test case, please output an integer indicating the checksum number in a line.

 

样例输入

2
3
1 2 3
3
100 200 300

 

样例输出

6
400

 

来源/分类

ICPC 2015 Changchun 

题意:给出n个数,求其中不同的i,j,k使得(ai+aj)^ak的值最大,输出最大值.

题解:第一次见到这种处理方式是在CF中,当时还感觉是个很骚的操作,现在发现这居然是基本操作.....

可以将每个数字的二进制构造字典树,那么对于一个数查找最大值,它的每一位二进制就是一层,若它这一位是0,那么你就要在字典树的这一层查找1,若这一位是1,那么你就要查找0(查找到0这个数不会变化,查找到1则会变大或变小),因为i,j,k不能相同,所以每次查找枚举i,j就要在字典树中把这两个数字删去,然后再添加上。

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e6+7;ll a[maxn];
int tire[maxn][2],tot,sz[maxn];void ins(ll x)
{int rt=1;sz[rt]++;for(ll i=30;i>=0;i--){int u=x&(1<<i)? 1:0;if(!tire[rt][u]) tire[rt][u]=++tot;rt=tire[rt][u];sz[rt]++;}
}void del(ll x)
{int rt=1;sz[rt]--;for(ll i=30;i>=0;i--){int u=x&(1<<i)? 1:0;rt=tire[rt][u];sz[rt]--;}
}ll find(ll x)
{int rt=1;for(ll i=30;i>=0;i--){int u=x&(1<<i)?1:0;if(u){if( tire[rt][0] && sz[ tire[rt][0] ] )rt=tire[rt][0];elsert=tire[rt][1],x^=(1<<i);}else{if( tire[rt][1] && sz[ tire[rt][1] ] )rt=tire[rt][1],x^=(1<<i);elsert=tire[rt][0];}}return x;
}int main()
{int T;scanf("%d",&T);while(T--){memset(tire,0,sizeof(tire));memset(sz,0,sizeof(sz));tot=1;int n;scanf("%d",&n);for(int i=1;i<=n;i++){scanf("%lld",&a[i]);ins(a[i]);}ll ans=0;for(int i=1;i<=n;i++){del(a[i]);for(int j=i+1;j<=n;j++){del(a[j]);ans=max(ans,find(a[i]+a[j]));ins(a[j]);}ins(a[i]);}printf("%lld\n",ans);}return 0;
}

 

这篇关于中国石油大学 Chip Factory(字典树处理异或最大值)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展

【科技明说 | 科技热点关注】 2024戴尔科技峰会在8月如期举行,虽然因事未能抵达现场参加,我只是观看了网上在线直播,也未能采访到DTF现场重要与会者,但是通过数十年对戴尔的跟踪与观察,我觉得2024戴尔科技峰会给业界传递了6大重要信号。不妨简单聊聊:从戴尔公司中国大饭店DTF大会,看科技外企如何在中国市场发展? 1)退出中国的谣言不攻自破。 之前有不良媒体宣扬戴尔将退出中国的谣言,随着2

POJ2001字典树

给出n个单词,求出每个单词的非公共前缀,如果没有,则输出自己。 import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.io.PrintWriter;import java.io.UnsupportedEncodingException;

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

明明的随机数处理问题分析与解决方案

明明的随机数处理问题分析与解决方案 引言问题描述解决方案数据结构设计具体步骤伪代码C语言实现详细解释读取输入去重操作排序操作输出结果复杂度分析 引言 明明生成了N个1到500之间的随机整数,我们需要对这些整数进行处理,删去重复的数字,然后进行排序并输出结果。本文将详细讲解如何通过算法、数据结构以及C语言来解决这个问题。我们将会使用数组和哈希表来实现去重操作,再利用排序算法对结果

8. 自然语言处理中的深度学习:从词向量到BERT

引言 深度学习在自然语言处理(NLP)领域的应用极大地推动了语言理解和生成技术的发展。通过从词向量到预训练模型(如BERT)的演进,NLP技术在机器翻译、情感分析、问答系统等任务中取得了显著成果。本篇博文将探讨深度学习在NLP中的核心技术,包括词向量、序列模型(如RNN、LSTM),以及BERT等预训练模型的崛起及其实际应用。 1. 词向量的生成与应用 词向量(Word Embedding)

使用协程实现高并发的I/O处理

文章目录 1. 协程简介1.1 什么是协程?1.2 协程的特点1.3 Python 中的协程 2. 协程的基本概念2.1 事件循环2.2 协程函数2.3 Future 对象 3. 使用协程实现高并发的 I/O 处理3.1 网络请求3.2 文件读写 4. 实际应用场景4.1 网络爬虫4.2 文件处理 5. 性能分析5.1 上下文切换开销5.2 I/O 等待时间 6. 最佳实践6.1 使用 as