1 solutions

  • 1
    @ 2025-8-13 15:26:29

    首先,已证在 i 上进行一次操作,可以理解为对于输入数组 a 的前缀和数组 sum 上交换了 i-1i,所以只有输入数组 ab 分别前缀和的两个数组 sumasumb 排序后一模一样,即两个数组除数序完全一致,就是成立的情况。

    代码如下:

    #include <bits/stdc++.h>
    #define int long long
    #define endl '\n'
    using namespace std;
    const int N=1e5+10;
    int a[N],b[N],suma[N],sumb[N];
    signed main(){
    	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
    	int T;
    	cin>>T;
    	while(T--){
    		int n;
    		cin>>n;
    		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++) suma[i]=suma[i-1]+a[i],sumb[i]=sumb[i-1]+b[i];
    		sort(suma+1,suma+n+1);sort(sumb+1,sumb+n+1);
    		int flag=1;
    		for(int i=1;i<=n;i++) if(suma[i]!=sumb[i]) flag=0;
    		if(flag) cout<<"YES"<<endl;
    		else cout<<"NO"<<endl;
    	}
    	return 0;
    }
    
    

    希望对大家有帮助。

    Information

    ID
    201
    Time
    1000ms
    Memory
    512MiB
    Difficulty
    9
    Tags
    (None)
    # Submissions
    245
    Accepted
    21
    Uploaded By