Today, as a friendship gift, Bakry gave Badawy nn integers a1,a2,…,ana1,a2,…,an and challenged him to choose an integer XX such that the value max1≤i≤n(ai⊕X)max1≤i≤n(ai⊕X) is minimum possible, where ⊕⊕ denotes the bitwise XOR operation.

As always, Badawy is too lazy, so you decided to help him and find the minimum possible value of max1≤i≤n(ai⊕X)max1≤i≤n(ai⊕X).

Input
The first line contains integer nn (1≤n≤1051≤n≤105).

The second line contains nn integers a1,a2,…,ana1,a2,…,an (0≤ai≤230−10≤ai≤230−1).

Output
Print one integer — the minimum possible value of max1≤i≤n(ai⊕X)max1≤i≤n(ai⊕X).

Examples
Input
3
1 2 3
Output
2
Input
2
1 5
Output
4
Note
In the first sample, we can choose X=3X=3.

In the second sample, we can choose X=5X=5.

题意:找出一个数X使得最小,并求出这个值。
思路:异或值最大,首先想到的是字典树,但是根据这个思路,如果说这一位异或之后的数字相同,那么这一位就不产生贡献。如果说这一位异或之后的数字不相同,那么就产生贡献(1<<k)。但是我们要求最大值最小,我们只需要看后面的数产生的贡献哪个比较小就可以了。这样我们把这一位是1的,和这一位是0的分成两个集合,分别递归下去,取返回值较小的,再加上(1<<k)就可以了。
代码如下:

#include<bits/stdc++.h>
using namespace std;const int maxx=1e5+100;
int n;inline int dfs(int k,vector<int> &p)
{if(k<0) return 0;if(p.size()==0) return 0;vector<int> p1,p0;for(int i=0;i<p.size();i++){if((p[i]>>k)&1) p1.push_back(p[i]);else p0.push_back(p[i]);}if(p0.size()==0) return dfs(k-1,p1);if(p1.size()==0) return dfs(k-1,p0);return min(dfs(k-1,p1),dfs(k-1,p0))+(1<<k);
}
int main()
{while(scanf("%d",&n)!=EOF){vector<int> p;int x;for(int i=1;i<=n;i++) {scanf("%d",&x);p.push_back(x);}cout<<dfs(30,p)<<endl;}return 0;
}

努力加油a啊,(o)/~

Dr. Evil Underscores(异或最大值最小)相关推荐

  1. CodeForces - 1285D Dr. Evil Underscores(记忆化搜索+字典树)

    题目链接:点击查看 题目大意:给出n个数字,现在要求出一个X,使得X与n个数字单独异或之后的最大值,输出这个最大值的最小值 题目分析:最大值的最小值,差点就以为是字典树+二分了,因为没有单调性然后就无 ...

  2. CF1285D Dr. Evil Underscores 01Trie+贪心

    给出 n n n个整数 a 1 , a 2 , - , a n a_1,a_2,\ldots,a_n a1​,a2​,-,an​,要求选出一个整数 X X X,最小化 max ⁡ 1 ≤ i ≤ n ...

  3. Dr. Evil Underscores

    Today, as a friendship gift, Bakry gave Badawy nnn integers a1,a2,-,ana_1,a_2,-,a_na1​,a2​,-,an​ and ...

  4. 图论500题 ---- 并查集求路径上最大值最小不超过K的点对数 HDU Portal

    题目链接 题目大意: 就给你一个图,qqq次询问,问你这个图上有多少对点之间的所以路径上的最大值的最小值不超过kkk? 解题思路: 首先我们知道这本质上就是求两个点联通的路径上的最大值最小是多少? 那 ...

  5. Monthly Expense POJ - 3273(二分最大值最小化)

    Farmer John is an astounding accounting wizard and has realized he might run out of money to run the ...

  6. leetcode 二分法 最大值最小化/最小值最大化

    一.(leetcode 410)分割数组的最大值 题目描述: 给定一个非负整数数组和一个整数 m,你需要将这个数组分成 m 个非空的连续子数组.设计一个算法使得这 m 个子数组各自和的最大值最小. 代 ...

  7. uva 714 Copying Books(二分法求最大值最小化)

    题目连接:714 - Copying Books 题目大意:将一个个数为n的序列分割成m份,要求这m份中的每份中值(该份中的元素和)最大值最小, 输出切割方式,有多种情况输出使得越前面越小的情况. 解 ...

  8. 最大值最小化(网易有道2013年校园招聘面试一面试题)

    题目描述: 在印刷术发明之前,复制一本书是一个很困难的工作,工作量很大,而且需要大家的积极配合来抄写一本书,团队合作能力很重要. 当时都是通过招募抄写员来进行书本的录入和复制工作的, 假设现在要抄写m ...

  9. 【算法 | 实验8】分配最小页数(数组划分和最大值最小化问题)

    文章目录 题目 问题分析与算法设计思路 思路1:类似枚举的分治(暴力) 思路2:二分法 算法实现(C++) 思路1实现 思路2实现 bug记录 1.子问题对最大值没有实现最小化 2.保存的最大值是局部 ...

最新文章

  1. Python3中raise用法
  2. Windows10 中使用 virtualbox 安装ubuntu 虚拟机
  3. C++中 #include与#include
  4. c语言注释的开始标记符和结束标记符分别为,C语言程序设计填空题
  5. Python基础day02 作业解析【6道 if 判断题、9道 循环题】
  6. 阿里云服务器上配置并使用: PHP + Redis + Mysql 从配置到使用
  7. [转] Java中的static关键字解析
  8. 字符串解析成easyui-tree的格式
  9. 数据采集时总提示未登录_个税申报系统新功能!申报数据丢了也能找回!|税务局|个税|办税服务厅|纳税...
  10. PHP中巧用curl 并发减少获取第三方网页内容时间
  11. cm11 android l,【鹰眼出品】安卓4.4.4 CM11已刷,流畅度爆表!《转》
  12. Tomcat文件包含漏洞:CNVD-2020-10487(简介/验证/利用/修复)
  13. 友善之臂mini2440使用日志1
  14. 有线以太网RJ45网口网卡转无线wifi网卡转wifi网口转无线有线转无线方案
  15. protobuf 3.5 java使用介绍(二)
  16. 自动计算所有子对象包包围盒
  17. 成功解决电脑麦克风不管用、电脑无法录制声音之出现的麦克风Realtek(R) Audio未插入
  18. 大数据可视化,助力行业大数据应用
  19. 电商平台-订单抽成模块的设计与架构
  20. 【数学】幂运算与快速幂取余

热门文章

  1. C# 的TCPClient异步连接与异步读数据
  2. envi插件大津法_IDL打开科学数据集
  3. Android调用系统相机和相册(更换微信头像)
  4. vue获取本地php数据,Vue-cli项目获取本地json文件数据的实例
  5. java byte 拓展_Java项目中如何扩展第三方jar包中的类?
  6. html如何将多个复选框组织成一组_[Selenium]18.如何处理一组元素
  7. IOS开发之Cocoa编程—— NSUndoManager
  8. 虚拟主机搭建微信公众号服务器,建web服务器同时如何搭建虚拟主机?方法有几种?...
  9. 2013年 省职业学校 公共基础课程 两课 评比 计算机应用,江苏省职业学校公共基础课程两课评比教案.doc...
  10. CentOS 6.5通过ifconfig命令看不到网卡IP地址的解决方法