题意:
www.lydsy.com/JudgeOnline/upload/201710/10.rar
实在不会概括
题解:
其实这题并不难,只是我太菜了。
可以发现,一次操作相当于将前两个数的前缀和交换,所以分别计算出两列数的前缀和,排序后比较是否完全相同即可。
code:
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
#define LL long long
using namespace std;
LL sum1[100010],sum2[100010];
int n;
int main()
{
int T;scanf("%d",&T);
while(T--)
{
sum1[0]=sum2[0]=0;
scanf("%d",&n);
for(int i=1;i<=n;i++)
{
LL x;scanf("%lld",&x);
sum1[i]=sum1[i-1]+x;
}
for(int i=1;i<=n;i++)
{
LL x;scanf("%lld",&x);
sum2[i]=sum2[i-1]+x;
}
sort(sum1+1,sum1+n+1);
sort(sum2+1,sum2+n+1);
bool ty=true;
for(int i=1;i<=n;i++)
if(sum1[i]!=sum2[i]) ty=false;
if(ty) printf("YES\n");
else printf("NO\n");
}
}