超时, 求调
  • 板块学术版
  • 楼主_Accepted_100
  • 当前回复1
  • 已保存回复1
  • 发布时间2024/8/19 16:41
  • 上次更新2024/8/19 17:23:12
查看原帖
超时, 求调
1039923
_Accepted_100楼主2024/8/19 16:41

显示:Process not running(sleep)

求大佬告诉我这是什么意思

怎么解决

#include <bits/stdc++.h>
using namespace std;

const int N = 5000010;
int n, maxn, tot;
int a[N], sum[N], l[N], r[N], ch[N][2], cnt[N];

inline void insert(int x) {
	int p = 0;
	for (int i = 30; ~i; i--) {
		int t = x >> i & 1;
		if (!ch[p][t]) ch[p][t] = ++tot;
		p = ch[p][t];
	}
}

inline int query(int x) {
	int p = 0, ans = 0;
	for (int i = 30; ~i; i--) {
		int t = x >> i & 1;
		if (ch[p][t ^ 1]) p = ch[p][t ^ 1], ans += (t ^ 1) << i;
		else p = ch[p][t], ans += t << i;
	}
	return ans;
}

int main() {
	scanf("%d", &n);
	for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
	insert(0);
	for (int i = 1; i <= n; i++) {
		sum[i] = sum[i - 1] ^ a[i], insert(sum[i]);
		l[i] = max(l[i - 1], sum[i] ^ query(sum[i]));
	}
	insert(0);
	for (int i = n; i >= 1; i--) {
		sum[i] = sum[i + 1] ^ a[i], insert(sum[i]);
		r[i] = max(r[i + 1], sum[i] ^ query(sum[i]));
	}
	for (int i = 1; i < n; i++) maxn = max (maxn, l[i] + r[i + 1]);
	cout << maxn;
	return 0;
}
2024/8/19 16:41
加载中...