假装有题目 & Trie+贪心
题意:
从N个数中选出两个使其异或值最大.
SOL:
建立一个01字典树,然后对每一个数在树上贪心即可...Trie一个挺好的运用,复杂度O(n*n的位数)
CODE:
#include <cstdio>
#include <cstring>
#define MAX(a,b) ((a)>(b)?(a):(b))
#define NODE 3200010
#define N 100010
int n;
int v[N];
int node;
int next[NODE][2];
int end[NODE];
void add(int cur,int k)
{
memset(next[node],0,sizeof(next[node]));
end[node]=0;
next[cur][k]=node++;
}
int cal(int x)
{
int i,k,cur=0;
for(i=30;i>=0;i--)
{
k=((1<<i)&x)?0:1;
if(next[cur][k]) cur=next[cur][k];
else cur=next[cur][1-k];
}
return (x^end[cur]);
}
int main()
{
int i,j,k,x,cur;
int ans;
while(~scanf("%d",&n))
{
node=1;
memset(next[0],0,sizeof(next[0]));
for(i=0;i<n;i++)
{
scanf("%d",&x);
v[i]=x;
cur=0;
for(j=30;j>=0;j--)
{
k=((1<<j)&x)?1:0;
if(next[cur][k]==0) add(cur,k);
cur=next[cur][k];
}
end[cur]=x;
}
for(ans=i=0;i<n;i++) ans=MAX(ans,cal(v[i]));
printf("%d\n",ans);
}
return 0;
}
假装有题目 & Trie+贪心的更多相关文章
- hdu 4825 Xor Sum(trie+贪心)
		hdu 4825 Xor Sum(trie+贪心) 刚刚补了前天的CF的D题再做这题感觉轻松了许多.简直一个模子啊...跑树上异或x最大值.贪心地让某位的值与x对应位的值不同即可. #include ... 
- 【CH1602】最大异或和 trie+贪心
		题目大意:给定 N 个数,求这 N 个数中任选两个数进行异或运算,求最大的异或和是多少. 一个 int 类型的整数,可以看作一个长度为32位的字符串,异或运算不像加法,最大值不一定是由两个较大值得到. ... 
- 【CF706D】Vasiliy's Multiset Trie+贪心
		题目大意:需要维护一种数据结构,支持以下三种操作:插入一个数,删除一个数,查询该数据结构中的数异或给定数的最大值. 题解:如果没有删除操作就是一个标准的 Trie 上贪心求最大异或和问题.现在需要支持 ... 
- 求序列完美度(trie+贪心)
		题目链接: 求序列完美度 题目描述 给出由n个数组成的序列s,规定第i个数s[i]到第j个数s[j]组成的子序列的完美度为该子序列中所有数的和与任意一个不在该子序列中的数进行异或运算得到的值中的最大值 ... 
- 【九度OJ】题目1434贪心算法
		题目 本题的贪心算法策略需要深入思考一下 看到题目,最初没有理解题目的要求:看尽量多的完整的节目.尽量多是指数量多,自己理解成观看的时间最长.这样想其实简化了这道题. 正确理解题意后,首先想到的想法是 ... 
- 2019.03.25 bzoj4567: [Scoi2016]背单词(trie+贪心)
		传送门 题意: 给你n个字符串,不同的排列有不同的代价,代价按照如下方式计算(字符串s的位置为x): 1.排在s后面的字符串有s的后缀,则代价为n^2: 2.排在s前面的字符串有s的后缀,且没有排在s ... 
- fjwc2019 D6T2 密文(trie+贪心)
		#194. 「2019冬令营提高组」密文 设$s[i]$表示前$i$个密文的异或和 容易发现,只要知道$s[0]~s[n](s[0]=0)$就可以知道每一位的值. 转化一下,就变成了在完全图上求最小生 ... 
- [二进制trie][贪心]CSUOJ1216异或最大值
		题目传送门 过了好久,终于重新开始写博客了... 这是一道二进制trie树的模板题. 二进制trie树,理解一下就是一颗二叉树,左右儿子为0或1. 然后每插入一个数就进行一次Find操作. Find: ... 
- [BZOJ4567][SCOI2016]背单词(Trie+贪心)
		1.题意表述十分难以理解,简单说就是:有n个单词,确定一个背的顺序,使总代价最小. 2.因为第(1)种情况的代价是n*n,这个代价比任何一种不出现第(1)种情况的方案都要大,所以最后肯定不会出现“背某 ... 
随机推荐
- NYOJ题目1047欧几里得
			aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAskAAAIcCAIAAACLpKQmAAAgAElEQVR4nO3dv1LjOsMH4O8m6LkQ6l ... 
- 开发一款完备的android应用所必备的知识
			原文:http://blog.csdn.net/xyz_lmn/article/details/17575709 
- Weblogic监控指标
			http://blog.csdn.net/a_dreaming_fish/article/details/50592042 
- 如何使用Case进行简单判断
			Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex ' THEN '男' ' THEN '女' ELSE '其他' END --Case搜索函数 ' T ... 
- 理解理解python中的'*','*args','**','**kwargs'
			http://blog.csdn.net/callinglove/article/details/45483097 讲了一大堆, 我也是用来理解类继承当中的参数行为的. =============== ... 
- gitlab安装部署
			参考文章: https://gitlab.com/gitlab-org/gitlab-recipes/tree/master/install/centos http://www.xsjxmx.com/ ... 
- long和int的区别
			转自:http://blog.sina.com.cn/s/blog_6f62c9510101svjz.html 突然间就想到了long和int到底什么区别(发现有很多问题都是突然间想到的),然后百度. ... 
- 第九篇:在SOUI中使用多语言翻译
			为UI在不同地区显示不同的语言是产品国际化的一个重要要求. 在SOUI中实现了一套类似QT的多语言翻译机制:布局XML不需要调整,程序代码也不需要调整,只需要为不同地区的用户提供不同的语言翻译文件即可 ... 
- iOS和Android的app界面设计规范(转)
			记录一下iOS和Andoird的界面设计规范,方便进行标准的产品设计,并与设计师顺畅沟通 iOS篇 界面尺寸 设备 分辨率 状态栏高度 导航栏高度 标签栏高度 iPhone6 plus 1242×22 ... 
- Cygwin的安装,卸载,以及安装gdb
			转载来源 http://10000001.blog.51cto.com/4600383/1341484 1.安装 其实Cygwin的安装时很简单的,需要的安装相应的就可以了,要详细的去网上找,很多 ... 
