社区讨论

nlogn神秘做法70pts求教

P14359[CSP-J 2025] 异或和参与者 1已保存回复 0

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
0 条
当前快照
1 份
快照标识符
@mhqm4yah
此快照首次捕获于
2025/11/09 02:23
4 个月前
此快照最后确认于
2025/11/16 14:06
4 个月前
查看原帖
CPP
#include <bits/stdc++.h>
using namespace std;
int n,k,a[500005],qzh[500005],tt;
vector<int> ve[1500000];
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		qzh[i]=qzh[i-1]^a[i];
	}
	for(int i=1;i<=n;i++){
		ve[qzh[i]].push_back(i);
	}
	int pl=-1;
	ve[0].push_back(0);
	for(int i=1;i<=n;i++){
		int noww=qzh[i]^k;
		if(ve[noww].size()==0) continue;
		int p=upper_bound(ve[noww].begin(),ve[noww].end(),i)-ve[noww].begin()-1;
		if(p<0) continue;
//		cout<<'x'<<endl;
//		cout<<'y'<<endl;
		if(ve[noww][p]>=pl){
//			cout<<'z'<<endl;
			pl=i;
			tt++;
		}
	}
	cout<<tt<<endl;
	return 0;
}
所有k=0或1的点都没过

回复

0 条回复,欢迎继续交流。

正在加载回复...