1 solutions
-
0
Guest MOD
-
1
首先,已证在 i 上进行一次操作,可以理解为对于输入数组 a 的前缀和数组 sum 上交换了 i-1 和 i,所以只有输入数组 a 和 b 分别前缀和的两个数组 suma 和 sumb 排序后一模一样,即两个数组除数序完全一致,就是成立的情况。
代码如下:
#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