题目传送门

题意:从n个数中选出不同的三个数a b c,使得(a+b)^c 最大

分析:先将所有数字按位插入到字典树上,然后删除两个数字,贪心询问与剩下的数字最大异或值。

/************************************************
* Author        :Running_Time
* Created Time  :2015/11/1 14:58:49
* File Name     :J.cpp************************************************/#include <cstdio>
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cmath>
#include <string>
#include <vector>
#include <queue>
#include <deque>
#include <stack>
#include <list>
#include <map>
#include <set>
#include <bitset>
#include <cstdlib>
#include <ctime>
using namespace std;#define lson l, mid, rt << 1
#define rson mid + 1, r, rt << 1 | 1
typedef long long ll;
const int N = 1e3 + 10;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
struct Trie {int ch[N*30][2], sz;int cnt[N*30];void init(void) {sz = 1; ch[0][0] = ch[0][1] = 0;memset (cnt, 0, sizeof (cnt));}void insert(int x)  {int u = 0;for (int c, i=30; i>=0; --i)   {c = x & (1 << i) ? 1 : 0;if (!ch[u][c])  {ch[sz][0] = ch[sz][1] = 0;ch[u][c] = sz++;}u = ch[u][c];cnt[u]++;}}void remove(int x)  {int u = 0;for (int c, i=30; i>=0; --i)    {c = x & (1 << i) ? 1 : 0;u = ch[u][c];cnt[u]--;}}int query(int x)    {int u = 0;for (int c, i=30; i>=0; --i)   {c = x & (1 << i) ? 1 : 0;if (c == 1) {if (ch[u][0] && cnt[ch[u][0]])  u = ch[u][0];else    u = ch[u][1], x ^= (1 << i);}else    {if (ch[u][1] && cnt[ch[u][1]])  u = ch[u][1], x ^= (1 << i);else    u = ch[u][0];}}return x;}
}trie;
int a[N];int main(void)    {int T;  scanf ("%d", &T);while (T--) {int n;  scanf ("%d", &n);for (int i=1; i<=n; ++i)    {scanf ("%d", &a[i]);}int ans = 0;trie.init ();for (int i=1; i<=n; ++i)    {trie.insert (a[i]);}for (int i=1; i<=n; ++i)    {trie.remove (a[i]);for (int j=i+1; j<=n; ++j)  {trie.remove (a[j]);ans = max (ans, trie.query (a[i] + a[j]));trie.insert (a[j]);}trie.insert (a[i]);}printf ("%d\n", ans);}return 0;
}

  

转载于:https://www.cnblogs.com/Running-Time/p/4956062.html

Trie UVALive 7192 Chip Factory (15长春J)相关推荐

  1. HDU 5536 Chip Factory 字典树+贪心

    给你n个数,a1....an,求(ai+aj)^ak最大的值,i不等于j不等于k 思路:先建字典树,暴力i,j每次删除他们,然后贪心找k,再恢复i,j,每次和答案取较大的,就是答案,有关异或的貌似很多 ...

  2. Chip Factory HDU - 5536

    Chip Factory HDU - 5536 题意: 给你n个数,让你从中选出i,j,k三个下标,求最大的 (a[i]+a[j])^ a[k] 题解: 这种查找最大异或一般有两个方向,一个是有公式推 ...

  3. HDU 5536 Chip Factory 01字典树

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5536 题意:数组中求 i,j,k 最大的(A[i] + A[j]) xor A[k] i != j ...

  4. HDU 5536 Chip Factory (01字典树)

    传送门:HDU 5536 题目大意: 在一个数组中找出 (s[i]+s[j])^s[k] 最大的值,其中 i.j.k 各不相同. 前至技能:01字典树详解. 思路: 01字典树模板可以解决查找与 x ...

  5. Trie(字典)树详解

    什么是Trie(字典)树 顾名思义,这棵树和字典类似,通过百度我们又能知道Trie树是一种树形结构,是一种哈希树的变种.典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引 ...

  6. KMP Trie 例题讲解

    文章目录 HDU 4763 Theme Section 题意: 题解: 代码: POJ 3630 Phone List 题意: 题解: 代码: HDU 3746 Cyclic Nacklace 题意: ...

  7. YYHS-吴传之火烧连营(梦回三国系列T3)(trie树)

    题目描述 [题目背景] 蜀汉章武元年(221年),刘备为报吴夺荆州.关羽被杀之仇,率大军攻吴.吴将陆逊为避其锋,坚守不战,双方成对峙之势.蜀军远征,补给困难,又不能速战速决,加上入夏以后天气炎热,以致 ...

  8. 字符串匹配数据结构 --Trie树 高效实现搜索词提示 / IDE自动补全

    文章目录 1. 算法背景 2. Trie 树实现原理 2.1 Trie 树的构建 2.2 Trie树的查找 2.3 Trie树的遍历 2.4 Trie树的时间/空间复杂度 2.5 Trie 树 Vs ...

  9. 一文弄懂元学习 (Meta Learing)(附代码实战)《繁凡的深度学习笔记》第 15 章 元学习详解 (上)万字中文综述

    <繁凡的深度学习笔记>第 15 章 元学习详解 (上)万字中文综述(DL笔记整理系列) 3043331995@qq.com https://fanfansann.blog.csdn.net ...

最新文章

  1. 常用正则表达式合集与工具
  2. 【Linux】ubuntu或linux网卡配置/etc/network/interfaces
  3. mini-treeselect的动态赋值
  4. oracle 11g的em界面按钮乱码的解决办法
  5. 学习MongoDB(三) Add an Arbiter to Replica Set 集群中加入仲裁节点
  6. 115个Java面试题和答案——终极列表(下)
  7. 怎么判断linux22端口是否通,在Linux环境下使用SSH判断端口是否通(示例代码)
  8. C# 本质论 第二章 数据类型
  9. 用PHP玩百万英雄类型游戏!!!
  10. 有佳文档管理v2.03
  11. WPF使用PictureBox
  12. 计算机辅助 教学方案,计算机辅助设计教学.doc
  13. Java--静态代理和动态代理
  14. RK3288-ANDROID8.1-电源指示灯
  15. provide和inject的用法
  16. SAP增强总结-第四代增强(BTE概念及原理)
  17. laravel api 429 问题解决
  18. 递归实现求最大公约数
  19. OpenCV_车辆检测实战
  20. STM32寄存器操作端口模式CRL/CRH详解

热门文章

  1. codevs 2879 堆的判断
  2. Java 随笔——7
  3. git log 查看提交记录,参数:
  4. linux redhat 下命令行全部乱码解决
  5. win8.1配置java环境个人 win8.1
  6. ConvertUtil-数据类型转换的工具类
  7. Mongodb数据分片的实现
  8. 事实证明,OpenCV中对RGB图像数据的存储顺序是BGR,而且Scalar()的顺序也是B,G,R
  9. C 实现Mysql增量备份_window下mysql数据库增量备份实现教程
  10. Cloud Native Computing Foundation Welcomes the NATS Messaging Protocol into the Fold