入门oj 6451: The XOR Largest Pair之二
Description
在给定的N个整数 A_1,A_2,…,A_N中选出两个进行异或运算,得到的结果最大是多少?
正当他志得意满时,L老师亮出了另一个题:
给你1000个数字a1到a1000,从其中选出三个数字ai,aj,ak
(1<=i,j,k<=1000,且i,j,k互不相同)
满足(ai+aj)xor ak的值最大
小W顿时迷茫了.........
Input
Output
Sample Input
4
1
2
3
4
Sample Output
7
HINT
(1+2)xor4=7
sol
trie题
具体做法:
1把每一个数字转为二进制,放入一个trie
2枚举每两个数的和,枚举一遍,因为是做异或运算,所以可以从高位往地位取(越高越好)
你会发现选的数字是不能重复的,所以要先把选的数从trie里面删掉
代码如下:
#include<cstring>
#include<iostream>
using namespace std;
const long long maxn=1e5+10;
long long a[310001][11],tot,sum[1001],End[maxn],ans;
char str[maxn];
void ins(long long str,long long vol)//如果vol==1 就是把一个数加进来,反之,就是删去那个数
{
long long p=0;
for(long long i=31;i>=0;i--)
{
long long l=(str>>i)&1;
if(!a[p][l])
a[p][l]=++tot;
p=a[p][l];
End[p]+=vol;
}//trie模板,不会自学
}
long long find(long long str)
{
long long p=0;
long long ans=0;
for(long long i=31;i>=0;i--)
{
long long l=(str>>i)&1;//算出第i位是几
if(a[p][l^1]) ans=ans<<1|1,p=a[p][l^1];
else ans=ans<<1,p=a[p][l];//ans=ans<<1|1相当于在ans=ans<<1的第i位加1
}
return ans;
} int main(){
long long n,m;
cin>>n;
tot=0;
for(long long i=1;i<=n;i++)
cin>>sum[i],ins(sum[i],1);
for(long long i=1;i<=n;i++)
for(long long j=i+1;j<=n;j++){
ins(sum[i],-1);
ins(sum[j],-1);//删除
ans=max(ans,find(sum[i]+sum[j]));
ins(sum[i],1);
ins(sum[i],1);//再加回来
} cout<<ans;
return 0;
}
外送一个网址http://begin.lydsy.com/JudgeOnline/discuss3/thread.php?tid=735
入门oj 6451: The XOR Largest Pair之二的更多相关文章
- CH1602 The XOR Largest Pair【Trie树】
1602 The XOR Largest Pair 0x10「基本数据结构」例题 描述 在给定的N个整数A1,A2……AN中选出两个进行xor运算,得到的结果最大是多少? 输入格式 第一行一个整数N, ...
- 「LOJ#10050」「一本通 2.3 例 2」The XOR Largest Pair (Trie
题目描述 在给定的 $N$ 个整数 $A_1,A_2,A_3...A_n$ 中选出两个进行异或运算,得到的结果最大是多少? 输入格式 第一行一个整数$N$. 第二行$N$个整数$A_i$. 输出格式 ...
- The XOR Largest Pair(tire树)
题目 The XOR Largest Pair 解析 一年前听学长讲这道题,什么01trie,好高级啊,所以没学,现在一看.... 看到xor就应该想到二进制,一看数据\(A_i< 2^{31} ...
- CH 1602 - The XOR Largest Pair - [字典树变形]
题目链接:传送门 描述在给定的 $N$ 个整数 $A_1, A_2,\cdots,A_N$ 中选出两个进行xor运算,得到的结果最大是多少? 输入格式第一行一个整数 $N$,第二行 $N$ 个整数 $ ...
- The XOR Largest Pair
刷刷书上的例题 在给定的N个整数A1,A2……An中选出两个进行XOR运算,得到的结果最大是多少?N<=105,0<=Ai<231 SOlution: 我们思考到对于两个数相异或,是 ...
- The XOR Largest Pair [Trie]
描述 在给定的N个整数A1,A2--AN中选出两个进行xor运算,得到的结果最大是多少? 输入格式 第一行一个整数N,第二行N个整数A1-AN. 输出格式 一个整数表示答案. 样例输入 3 1 2 3 ...
- 019(The XOR Largest Pair)(字典树)
题目:http://ybt.ssoier.cn:8088/problem_show.php?pid=1472 题目思路:异或是啥呀? 异或就是把两个数字变成位数相同的二进制在同位比较,相同为0,不同为 ...
- The XOR Largest Pair (trie树)
题目描述 在给定的 NN 个整数 A_1,A_2,--,A_NA1,A2,--,AN 中选出两个进行xor运算,得到的结果最大是多少?xor表示二进制的异或(^)运算符号. 输入格式 第一行输入 ...
- 字典树-THE XOR largest pair
题目:给你n个数字A1,A2....An ,问从中选出两个数字异或运算得到的最大结果是多少 0<=Ai<231 用字典树,记录每个数字的31位2进制01串(int 为4个字节,每个字节8个 ...
随机推荐
- 基于spring@aspect注解的aop实现
第一步:编写切面类 package com.dascom.hawk.app.web.tool; import org.aspectj.lang.JoinPoint; import org.aspect ...
- Python中sorted(iterable, *, key=None, reverse=False)函数参数定义中的独立星号(*)的含义
老猿在 <Python中函数的参数带星号是什么意思?>中介绍了Python函数中参数带星号的含义,而在实际使用和Python的标准文档中,会看到某写函数(如sorted(iterable, ...
- mysql中innodb引擎的mvcc机制和BufferPool缓存机制
一.MVCC (1)mvcc主要undo日志版本链和read-view一致性视图来保证多事务的并发控制,mvcc是innodb的一种特殊机制,他保证了事务四大特性之一的隔离性(原子性,一致性,隔离性) ...
- windows cmd 链接远程mysql服务器
我要链接的mysql 所在ip:192.168.0.110 用户名:root 密码:123 那么: 打开cmd 输入: mysql -h192.168.0.110 -uroot -p123 即 ...
- 深入理解python
1 python自身的威力 1.1 使用type.str.dir.其他内置函数 //type函数:返回任意对象的数据类型.比如:整型.字符串.列表.字典.元组.函数.类.模块,甚至类型对象都可以作为参 ...
- 查询满足条件的最新数据(逐步优化,mysql、达梦数据库)
1.条件:报警信息表sensor_warning 2.需求: 查询当前车厢的.不同设备的.所有处理未完成的.不同报警原因的.时间最新的数据集合,最后按设备id或报警时间排序 3.原始sql,不满足实际 ...
- Scrum 冲刺 第七篇
Scrum 冲刺 第七篇 每日会议照片 昨天已完成工作 队员 昨日完成任务 黄梓浩 初步完成app首页模块的搭建 黄清山 完成部分个人界面模块数据库的接口 邓富荣 完成部分个人界面接口 钟俊豪 完成部 ...
- C#知识结构
C#知识结构 对于一个工作多年的程序员而言,接口.反射.索引器.事件.委托这些耳熟能详的词汇,提起来别说多简单了,但是让老司机坐在那一个人拿起一支笔,把脑海中对C#知识结构进行梳理一下,大抵是写不了多 ...
- clang-format 数组初始化,多行模式
clang-format 在格式化多行数组的初始化时不够理想.例如 int array[] = { 0, 1, 2 }; 会被格式化为: int array[] = { 0, 1, 2}; 如果在最后 ...
- Python-自动化测试面试
1.以你做过的项目,举例来说一下你的自动化测试是怎么做的? 参考答案:就拿简历上的ecshop项目来说吧,在编写脚本前,我们会对系统进行评估,确认这个系统可不可以实现UI自动化,如果可以的话,就筛选出 ...