题意:
让你找一个连续区间异或和最大,如果有相同的,则输出断点较小的。

题解:
01字典树,利用前缀和的思想进行求解,我们在插入前缀的同时,也在不断的更新最大值。
我们查询当前 二进制字符串与已经插入的 二进制字符串中的哪一个异或和最大?
找到最大的那个,读取这个前缀和是到谁结束的,来判断是否要更新

/*Keep on going Never give up*/
//#pragma GCC optimize(3,"Ofast","inline")
#include<bits/stdc++.h>//#define int long long
#define endl '\n'
#define Accepted 0
#define AK main()
#define I_can signed
using namespace std;
const int maxn =1e7+10;
const int MaxN = 0x3f3f3f3f;
const int MinN = 0xc0c0c00c;
typedef long long ll;
const int inf=0x3f3f3f3f;
const ll mod=1e9+7;
using namespace std;int n,total;
int trie[maxn][2],num[maxn];void ins(int val,int x){int node=0;for(int i=21;i>=0;i--){int t=(val>>i)&1;if(!trie[node][t]){trie[node][t]=++total;}node=trie[node][t];}num[node]=x;
}
pair<int,int> quer(int val){int node=0,res=0;for(int i=21;i>=0;i--){int t=(val>>i)&1;if(trie[node][t^1]){res|=1<<i;node=trie[node][t^1];}else node=trie[node][t];}return make_pair(res,num[node]);
}signed main()
{ios::sync_with_stdio(false);int n;cin>>n;int ans=-1,l,r,sum=0;ins(sum,0);for(int i=1;i<=n;i++){int x;cin>>x;sum^=x;auto res=quer(sum);ins(sum,i);if(res.first>ans){ans=res.first;l=res.second;r=i;}}cout<<ans<<" "<<l+1<<" "<<r<<endl;return 0;}

奶牛异或(01字典树)相关推荐

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

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

  2. 【HDOJ6955】Xor sum(异或前缀和,01字典树)

    1006 Xor sum 题意: 给出一个长度为n的序列,求一个最短连续子序列满足异或和大于等于k.n<1e5. 思路: 参考CF665E,求序列a中有多少个异或和大于等于k的子序列,枚举所有的 ...

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

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

  4. hdu-4825(01字典树)

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

  5. zcmu-1783(01字典树)

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

  6. HDU4825 Xor Sum 01字典树(Tire Tree)

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

  7. codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)

    题目链接:http://codeforces.com/contest/842/problem/D 题解:像这种求一段异或什么的都可以考虑用字典树而且mex显然可以利用贪心+01字典树,和线段树差不多就 ...

  8. 字典树-01字典树基础

    字典树-01字典树 什么是字典树? 字典树,又叫前缀树,Trie树,通常被用作字符串匹配. 它的实现原理是什么? 先建立一颗树,对于这棵树上每个节点i与其后继节点间的连线,都有存入一个字符. 对于存图 ...

  9. 【CodeForces - 706D】Vasiliy's Multiset(01字典树)

    题干: Author has gone out of the stories about Vasiliy, so here is just a formal task description. You ...

最新文章

  1. VS2008 各种杂七杂八技巧
  2. BCB中获得RichEdit 默认行间距
  3. 集成Lucene和HBase(转)
  4. a标签阻止链接跳转(href=‘javascript:;‘)
  5. 【Linux系统编程】线程堆栈大小的使用介绍
  6. 元素或为1或为-1的行列式的值的估计
  7. 【计算机网络】数据链路相关技术
  8. 算法(12)-leetcode-explore-learn-数据结构-双链表的设计
  9. 百度获得国内首批无人驾驶乘用车高速公路道路测试资质
  10. CentOS7设置环境变量
  11. PhpStrom 配置Xdebug
  12. Spring-AnnotatedBeanDefinitionReader
  13. NHibernate Antlr.Runtime.NoViableAltException报错
  14. visual studio 11开发Win8模板
  15. PIC16F887 单片机 信号发生器 波形发生器 PCF8591
  16. h2os android版本,h2os属于安卓系统吗
  17. jzoj 4246【五校联考6day2】san
  18. 使用GCD 转自 Posted by 唐巧
  19. Android下载管理问题分析
  20. hp8080计算机无法usb启动,HP Compaq 8000 Elite 台式机​无法从U盘启动解决办法

热门文章

  1. Linux之vim中翻页的命令
  2. 最新!2022中国大学校友会排名发布
  3. Python环境的安装(Anaconda+Jupyter notebook+Pycharm)
  4. 【Python基础】拯救你奇丑无比的Python代码的神器
  5. 10个例子带你了解机器学习中的线性代数
  6. redis3.2集群搭建
  7. Java报表工具FineReport导出EXCEL的四种API
  8. druid+spring配置
  9. 链表面试题Java实现【重要】
  10. ViewPager动态添加、删除Fragment,且提供红色小圆球指示当前位置