csp-j模拟赛第二题求调

#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=1e5+10;
int n,a[N],s1[N],s2[N],maxn=-INT_MAX,minn=INT_MAX;
signed main(){
freopen(“mistake.in”,“r”,stdin);
freopen(“mistake.out”,“w”,stdout);
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++) s1[i]=s1[i-1]^a[i];
for(int i=n;i>=1;i–) s2[i]=s2[i+1]^a[i];
for(int i=1;i<=n;i++){
int res=(s1[i-1]+a[i])^s2[i+1];
if(maxn<res) maxn=res;
else if(minn>res) minn=res;
}
cout<<minn<<" "<<maxn;
return 0;
}

90分,不知道怎么回事

for循环从 2 开始。

那行从2开始

for(int i=1;i<=n;i++){
    int res=(s1[i-1]+a[i])^s2[i+1];
    if(maxn<res) maxn=res;
    else if(minn>res) minn=res;
}

改为

for(int i=2;i<=n;i++){
    int res=(s1[i-1]+a[i])^s2[i+1];
    if(maxn<res) maxn=res;
    else if(minn>res) minn=res;
}

你能发一下第三题的代码吗,@张乐凡

你发一下你的代码行吗

第二题不用不用两个数组,可以利用异或的自反律,即 a \oplus b \oplus a=b
核心代码:

maxx=max(maxx,(zs[i]+a[i+1])^(zs[n]^zs[i+1]));
minn=min(minn,(zs[i]+a[i+1])^(zs[n]^zs[i+1]));

循环要从 1n-1

zs代表前缀异或和(我瞎打的)。

你发一下你的代码行吗

第三题我不会(我太蒟蒻了)。

我说第二题

我们信友队的论坛里不让发 AC 代码 。
否则要被禁言

你有洛谷号吗

这个人就是来骗吃骗喝骗代码

不是,我就第一道题AC了,这道题没想明白

核心代码:

for(long long i=1;i<n;i++){
	maxx=max(maxx,(zs[i]+a[i+1])^(zs[n]^zs[i+1]));
	minn=min(minn,(zs[i]+a[i+1])^(zs[n]^zs[i+1]));
}

我就这么改的不对

minn要赋初值为INT_MAX1<<31

你WA在了第1个点