哈希死了
  • 板块学术版
  • 楼主rand_Zq
  • 当前回复14
  • 已保存回复14
  • 发布时间2024/8/17 21:49
  • 上次更新2024/8/17 21:56:09
查看原帖
哈希死了
901086
rand_Zq楼主2024/8/17 21:49

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";
        }
    }
}

为什么

2024/8/17 21:49
加载中...