4260: Codechef REBXOR

Time Limit: 10 Sec  Memory Limit: 256 MB
Submit: 1281  Solved: 560
[Submit][Status][Discuss]

Description

Input

输入数据的第一行包含一个整数N,表示数组中的元素个数。
第二行包含N个整数A1,A2,…,AN。

Output

输出一行包含给定表达式可能的最大值。

Sample Input

5
1 2 3 1 2

Sample Output

6

设q[i]为前i个数的最大区间异或和,p[i]为后n-i+1个数的最大区间异或和

答案就是max(q[i]+p[i+1])

这样问题就转化了

令F[l, r] = a[l]^a[l+1]^…^a[r]

那么F[l, r] = F[0, r]^F[0, l-1],也就是两个前缀异或和相异或

用字典树维护一下前缀异或和和后缀异或和就行

#include<stdio.h>
#include<stdlib.h>
#include<algorithm>
using namespace std;
#define LL long long
typedef struct Trie
{Trie *next[2];
}Trie;
int a[400005], sum[400005], q[400005], p[400005];
void Update(Trie *root, int x)
{int i, now;Trie *p = root;for(i=30;i>=0;i--){now = 0;if(x&(1<<i))now = 1;if(p->next[now]==NULL){Trie *temp = new Trie;temp->next[0] = temp->next[1] = NULL;p->next[now] = temp;}p = p->next[now];}
}
int Query(Trie *root, int x)
{int i, now, ans = 0;Trie *p = root;for(i=30;i>=0;i--){now = 1;if(x&(1<<i))now = 0;if(p->next[now]!=NULL){ans += (1<<i);p = p->next[now];}else if(p->next[now^1]!=NULL)p = p->next[now^1];elsereturn ans;}return ans;
}
void Delete(Trie *root)
{int i;for(i=0;i<=1;i++){if(root->next[i]!=NULL)Delete(root->next[i]);}free(root);
}
int main(void)
{int n, i;LL ans = 0;Trie *root = new Trie;scanf("%d", &n);for(i=1;i<=n;i++){scanf("%d", &a[i]);sum[i] = sum[i-1]^a[i];}root->next[0] = root->next[1] = NULL;Update(root, 0);for(i=1;i<=n;i++){q[i] = max(Query(root, a[i]), q[i-1]);Update(root, a[i]);}free(root);root = new Trie;root->next[0] = root->next[1] = NULL;Update(root, 0);for(i=n;i>=1;i--){p[i] = max(Query(root, a[i]), p[i]);Update(root, a[i]);}for(i=1;i<=n-1;i++)ans = max(ans, (LL)q[i]+p[i+1]);printf("%lld\n", ans);free(root);return 0;
}
/*
2
1 2
*/

bzoj 4260: Codechef REBXOR(01字典树)相关推荐

  1. bzoj 4260: Codechef REBXOR

    Description Solution 记录前缀答案和后缀答案,然后枚举断点合并即可 求出以每一个结尾的最大异或的段,相当于求两个前缀异或值的最大值,用trie树贪心即可 #include<b ...

  2. Codechef REBXOR[dp+字典树]

    解题思路:1.区间异或和可以搞前缀[or后缀]异或,xori=lra=pre[l]⊕pre[r]xor_{i=l}^{r}a=pre[l]\oplus pre[r]xori=lr​a=pre[l]⊕p ...

  3. Codechef REBXOR HYSBZ - 4260(01字典树+区间异或最大)

    Input 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,-,AN. Output 输出一行包含给定表达式可能的最大值. Sample Input 5 1 2 ...

  4. [Bzoj4260]Codechef REBXOR(trie树)

    4260: Codechef REBXOR Time Limit: 10 Sec  Memory Limit: 256 MB Submit: 1534  Solved: 669 [Submit][St ...

  5. hdu5296 01字典树

    根据二进制建一棵01字典树,每个节点的答案等于左节点0的个数 * 右节点1的个数 * 2,遍历整棵树就能得到答案. AC代码: #include<cstdio> using namespa ...

  6. Beautiful Subarrays (01字典树 瞎搞)

    题意: 题解: 一看问的是子序列,并且还是异或. 首先想到01字典树,再一看让你求子序列的个数,大致是想让你把这个序列进行前缀异或处理后然后再01字典树上进行操作吧. 假设01字典树往左边是0右边是1 ...

  7. 奶牛异或(01字典树)

    题意: 让你找一个连续区间异或和最大,如果有相同的,则输出断点较小的. 题解: 01字典树,利用前缀和的思想进行求解,我们在插入前缀的同时,也在不断的更新最大值. 我们查询当前 二进制字符串与已经插入 ...

  8. hdu-4825(01字典树)

    Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total ...

  9. zcmu-1783(01字典树)

    1783: 秋实大哥与快餐店 Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 78  Solved: 12 [Submit][Status][Web B ...

最新文章

  1. WTForms 小计1 forms
  2. 华为2018届校招技术岗笔试题及个人解答
  3. exit(0)什么意思php,php – 文件中的exit(1)导致脚本状态码为0
  4. 【译】A quick list of new enterprise features in iOS 13, iPadOS, and macOS 10.15 Catalina
  5. 10万量级30秒自动化配座,0现场故障:这届冬奥票务系统有点不一样
  6. Parallels Desktop 16 升级 macOS Big Sur 无法联网解决方法
  7. RabbitMq(一)走进RabbitMq
  8. 计算机雕刻教学设计,综合实践《果蔬雕刻》教学设计第一课时
  9. 车牌识别的matlab程序(程序_讲解_模板),车牌识别的matlab程序(程序-讲解-模板)资料...
  10. nas网络存储_网络附加存储NAS
  11. ubuntu 挂载U盘 NTFS
  12. 云电脑有显卡吗?云电脑怎么做画面处理?
  13. 前端框架 — Bootstrap
  14. ValueError: y contains previously unseen labels: ‘103125‘
  15. “创新驱动的结构化思维”培训
  16. SIPM模拟器 MIPS汇编语言实现读取文件
  17. mac如何用移动随E行连接有线网络(中国计量大学)
  18. scrollTo()方法
  19. 心理学和计算机科学的联系,人工智能和心理学有什么关系?
  20. Lazy and Hungry

热门文章

  1. python画三维图-Python+matplotlib绘制三维图形5个精选案例
  2. 2018年python工作好找吗-2018年 Python面试必看的10个问题及答案
  3. python能做什么工作-学Python能找到什么工作?这4种工作最热门!
  4. 深度学习笔记 | 第16讲:语音识别——一份简短的技术综述
  5. 语音识别错误太多?高科技巨头们偏偏“不信邪”
  6. 什么是pdi检测_汽车pdi检测是什么?如何知道新车做没做pdi
  7. 订单失效怎么做的_虾皮Shopee新加坡电商做什么产品好呢?订单少得可怜怎么办呢...
  8. webpack跨域问题记录
  9. Vue 新手引导标签
  10. SpringCloud--GateWay搭建及路由转发规则介绍