中国石油大学 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

相关文章

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

resultMap如何处理复杂映射问题

《resultMap如何处理复杂映射问题》:本文主要介绍resultMap如何处理复杂映射问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录resultMap复杂映射问题Ⅰ 多对一查询:学生——老师Ⅱ 一对多查询:老师——学生总结resultMap复杂映射问题

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面