不吸氧全RE,吸氧30pts,求调QAQ
查看原帖
不吸氧全RE,吸氧30pts,求调QAQ
759274
Stevehim楼主2023/3/25 21:53
#include <bits/stdc++.h>
#define maxn 100100
using namespace std;
int f[maxn][20];
int a[maxn];
int log_2[maxn];
int n, m, x;

void init() {
	log_2[0] = -1;
	for (int i = 1; i <= n; i++)
		log_2[i] = log_2[i >> 1] + 1;
	for (int i = 1; i <= n; i++) {
		f[i][0] = a[i];
	}
//	cout << endl;
	for (int j = 1; (1 << j) <= n; j++)
		for (int i = 1; i <= n - (1 << j) + 1; i++)
			f[i][j] = max(f[i][j - 1], f[i + (1 << (j - 1))][j - 1]);
}

int query(int A, int B) {
	int x = log_2[B - A + 1];
	return max(f[A][x], f[B - (1 << x) + 1][x]);
}

int t[maxn];

int main() {
	cin >> n >> m >> x;
	for (int i = 1; i <= n; i ++) {
		int tmp;
		cin >> tmp;
		a[i] = t[tmp ^ x]; //a ^ b = c, c ^ b = a;
		t[tmp] = i;
	}
	init();
	int l, r;
	while (m--) {
		cin >> l >> r;
		if (query(l, r) >= l)
			puts("yes");
		else
			puts("no");
	}
	return 0;
}

2023/3/25 21:53
加载中...