社区讨论

9,10测试点为什么WA了

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

讨论操作

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

当前回复
2 条
当前快照
1 份
快照标识符
@mhiy8ikd
此快照首次捕获于
2025/11/03 17:40
4 个月前
此快照最后确认于
2025/11/03 17:40
4 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
long long n,k,a[500005],num;
bool ccc=true,vis[500005];
int main(){
	cin>>n>>k;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		vis[i]=true;
		if(a[i]>1){
			ccc=false;
		}
	}
	if(ccc==true){
		if(k>1){
			cout<<0;
			return 0;
		}
		if(k==1){
			for(int i=1;i<=n;i++){
				if(a[i]==1){
					num++;
				}
			}
			cout<<num;
			return 0;
		}
		if(k==0){
			for(int i=1;i<=n;i++){
				if(a[i]==1&&a[i+1]==1&&vis[i]==true&&vis[i+1]==true){
					vis[i]=false;
					vis[i+1]=false;
					num++;
				}
				if(a[i]==0){
					num++;
				}
			}
			cout<<num;
			return 0;
		}
	}
	//14-42就为了第13个测试点
	for(int len=1;len<=n;len++){
		for(int i=1;i<=n-len+1;i++){
			if(vis[i]==false) continue;
			int j=i+len-1;
			int p=a[i];
			for(int k=i+1;k<=j;k++){
				if(vis[k]==false){
					break;
				}
				p=p^a[k];
				
			}
			if(p==k){
				num++;
				for(int k=i;k<=j;k++){
					vis[k]=false;
				}
			}
		}
	}
	cout<<num;
}
为什么9,10两个测试点WA了,1-8AC,11-13AC,其他TLE,我寻思着我大暴力没问题呀 码风比较奇怪大佬勿喷

回复

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

正在加载回复...