奶牛异或(01字典树)
题意:
让你找一个连续区间异或和最大,如果有相同的,则输出断点较小的。
题解:
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字典树)相关推荐
- Codechef REBXOR HYSBZ - 4260(01字典树+区间异或最大)
Input 输入数据的第一行包含一个整数N,表示数组中的元素个数. 第二行包含N个整数A1,A2,-,AN. Output 输出一行包含给定表达式可能的最大值. Sample Input 5 1 2 ...
- 【HDOJ6955】Xor sum(异或前缀和,01字典树)
1006 Xor sum 题意: 给出一个长度为n的序列,求一个最短连续子序列满足异或和大于等于k.n<1e5. 思路: 参考CF665E,求序列a中有多少个异或和大于等于k的子序列,枚举所有的 ...
- Beautiful Subarrays (01字典树 瞎搞)
题意: 题解: 一看问的是子序列,并且还是异或. 首先想到01字典树,再一看让你求子序列的个数,大致是想让你把这个序列进行前缀异或处理后然后再01字典树上进行操作吧. 假设01字典树往左边是0右边是1 ...
- hdu-4825(01字典树)
Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others) Total ...
- zcmu-1783(01字典树)
1783: 秋实大哥与快餐店 Time Limit: 1 Sec Memory Limit: 128 MB Submit: 78 Solved: 12 [Submit][Status][Web B ...
- HDU4825 Xor Sum 01字典树(Tire Tree)
Xor Sum Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 132768/132768 K (Java/Others) Total ...
- codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)
题目链接:http://codeforces.com/contest/842/problem/D 题解:像这种求一段异或什么的都可以考虑用字典树而且mex显然可以利用贪心+01字典树,和线段树差不多就 ...
- 字典树-01字典树基础
字典树-01字典树 什么是字典树? 字典树,又叫前缀树,Trie树,通常被用作字符串匹配. 它的实现原理是什么? 先建立一颗树,对于这棵树上每个节点i与其后继节点间的连线,都有存入一个字符. 对于存图 ...
- 【CodeForces - 706D】Vasiliy's Multiset(01字典树)
题干: Author has gone out of the stories about Vasiliy, so here is just a formal task description. You ...
最新文章
- VS2008 各种杂七杂八技巧
- BCB中获得RichEdit 默认行间距
- 集成Lucene和HBase(转)
- a标签阻止链接跳转(href=‘javascript:;‘)
- 【Linux系统编程】线程堆栈大小的使用介绍
- 元素或为1或为-1的行列式的值的估计
- 【计算机网络】数据链路相关技术
- 算法(12)-leetcode-explore-learn-数据结构-双链表的设计
- 百度获得国内首批无人驾驶乘用车高速公路道路测试资质
- CentOS7设置环境变量
- PhpStrom 配置Xdebug
- Spring-AnnotatedBeanDefinitionReader
- NHibernate Antlr.Runtime.NoViableAltException报错
- visual studio 11开发Win8模板
- PIC16F887 单片机 信号发生器 波形发生器 PCF8591
- h2os android版本,h2os属于安卓系统吗
- jzoj 4246【五校联考6day2】san
- 使用GCD 转自 Posted by 唐巧
- Android下载管理问题分析
- hp8080计算机无法usb启动,HP Compaq 8000 Elite 台式机​无法从U盘启动解决办法