关注
#include <cstring>
#include <cstdio>
#include <algorithm>
const int MAXN = 110000;
namespace trie {
struct Node {
int ch[2];
int id;
} d[MAXN*35];
int tot = 0;
inline int newNode () {
memset(d+(++tot), 0, sizeof d[0]);
return tot;
}
inline void insert(int val, int id) {
//printf("ins:%d\n", val);
int mask = 1<<29, u = 0, t;
d[u].id = id;
while(mask) {
t = bool(val&mask);
if(!d[u].ch[t])
d[d[u].ch[t] = newNode()].id = id;
else d[d[u].ch[t]].id = id;
u = d[u].ch[t];
mask >>= 1;
}
}
inline int query(int val) {
int mask = 1<<29, u = 0, t;
while(mask) {
t = !(bool(val&mask));
if(!d[u].ch[t]) u = d[u].ch[!t];
else u = d[u].ch[t];
mask >>= 1;
}
return d[u].id;
}
}
inline int getInt() {
int ret = 0;
char ch; bool f = false;
while((ch = getchar()) < '0' || ch > '9') f |= (ch == '-');
do{ret *= 10; ret += ch - '0';}
while((ch = getchar()) >= '0' && ch <= '9');
return f ? -ret : ret;
}
int nums[MAXN];
int pref[MAXN];
int main() {
int n;
n = getInt();
for(int i = 1; i<=n; i++)
nums[i] = getInt();
int ans = 0, l, r;
for(int i = 1; i<=n; i++)
pref[i] = pref[i-1]^nums[i];
trie :: insert(0, 0);
r = 1;
for(int i = 1; i<=n; i++) {
int lp = trie :: query(pref[i]);
//printf("p:%d q:%d\n", i, lp);
if((pref[lp]^pref[i]) > ans) {
ans = pref[lp]^pref[i];
l = lp; r = i;
}
trie :: insert(pref[i], i);
}
printf("%d %d %d\n", ans, l+1, r);
}
查看原帖
点赞 1
相关推荐
点赞 评论 收藏
分享
点赞 评论 收藏
分享
牛客热帖
更多
正在热议
更多
# 面试问题记录 #
19916次浏览 340人参与
# 硬件人你反向读研了吗 #
40029次浏览 608人参与
# 京东TGT #
27783次浏览 151人参与
# 硬件人秋招的第一个offer #
65796次浏览 1081人参与
# 滴滴工作体验 #
23498次浏览 123人参与
# 非技术岗投递进展 #
137569次浏览 1222人参与
# 材料进Fab厂真的劝退吗? #
36300次浏览 158人参与
# 不考虑转正,实习多久合适 #
24336次浏览 118人参与
# 机械求职避坑tips #
41267次浏览 355人参与
# 互联网回暖,腾讯要招5000+人! #
263532次浏览 4889人参与
# 面试经验谈 #
12886次浏览 190人参与
# 机械只有转码才有出路吗? #
125887次浏览 1590人参与
# 职场新人生存指南 #
332708次浏览 7137人参与
# 面试吐槽bot #
2568次浏览 31人参与
# 异地恋该为对方跳槽吗 #
23641次浏览 119人参与
# 硬件人更看重稳定还是高薪 #
38798次浏览 203人参与
# vivo求职进展汇总 #
208615次浏览 1341人参与
# 25届如何提前做秋招准备? #
163939次浏览 2451人参与
# 你遇到过哪些神仙同事 #
69581次浏览 623人参与
# 租房找室友 #
27789次浏览 144人参与
# 深信服求职进展汇总 #
188788次浏览 1694人参与