ABC的F
这份没过
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int N=2e5+5;
int n,T,a[N],b[N],mp[N],sumA[N],sumB[N];
mt19937_64 rnd(time(0));
signed main(){
cin>>n>>T;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=1;i<=n;i++){
mp[i]=rnd();
}
for(int i=1;i<=n;i++){
sumA[i]=(sumA[i-1]^mp[a[i]]),sumB[i]=(sumB[i-1]^mp[b[i]]);
}
for(int l1,r1,l2,r2;T--;){
cin>>l1>>r1>>l2>>r2;
if(r1-l1!=r2-l2){
cout<<"No\n";
continue;
}
if((sumA[r1]^sumA[l1-1])==(sumB[r2]^sumB[l2-1])){
cout<<"Yes\n";
}
else{
cout<<"No\n";
}
}
}
这份过了
#include<bits/stdc++.h>
using namespace std;
#define int unsigned long long
const int N=2e5+5;
int n,T,a[N],b[N],mp[N],sumA[N],sumB[N];
mt19937_64 rnd(time(0));
signed main(){
cin>>n>>T;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
cin>>b[i];
}
for(int i=1;i<=n;i++){
mp[i]=rnd();
}
for(int i=1;i<=n;i++){
sumA[i]=sumA[i-1]+mp[a[i]],sumB[i]=sumB[i-1]+mp[b[i]];
}
for(int l1,r1,l2,r2;T--;){
cin>>l1>>r1>>l2>>r2;
if(r1-l1!=r2-l2){
cout<<"No\n";
continue;
}
if(sumA[r1]-sumA[l1-1]==sumB[r2]-sumB[l2-1]){
cout<<"Yes\n";
}
else{
cout<<"No\n";
}
}
}
为什么