[BZOJ 5071]小A的数字

Posted Z-Y-Y-S

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[BZOJ 5071]小A的数字相关的知识,希望对你有一定的参考价值。

Output

Sample Input

2
6
1 6 9 4 2 0
7 -6 19 2 -6 6
4
1 2 3 4

4 2 1 3

Sample Output

YES
NO

HINT

第一组数据中,可以依次取 i=2,4,5,每次得到的新数列如下:
第一次, i=2,得到 7,-6,15,4,2,0,
第二次, i=4,得到 7,-6,19,-4,6,0,
第三次, i=5,得到 7,-6,19,2,-6,6,所以可以得到 b 数列。
第二组数据中,不可能做到这一点。

将(Ai-1,Ai,Ai+1)变为(Ai-1 + Ai,-Ai,Ai+1 + Ai)

做前缀和转化为

(Ai-1,Ai-1+Ai,Ai-1+Ai+Ai+1)变为(Ai-1+Ai,Ai-1,Ai-1+Ai+Ai+1)

发现一次操作相当于交换前缀和的两位

所以将前缀和排序,判断相同就行了

zyys

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 using namespace std;
 6 int n;
 7 long long a[100001],b[100001];
 8 int main()
 9 {int T,i,flag;
10     cin>>T;
11     while (T--)
12     {
13         scanf("%d",&n);
14         for (i=1;i<=n;i++)
15         scanf("%lld",&a[i]),a[i]+=a[i-1];
16         for (i=1;i<=n;i++)
17         scanf("%lld",&b[i]),b[i]+=b[i-1];
18         sort(a+1,a+n+1);
19         sort(b+1,b+n+1);
20         flag=0;
21         for (i=1;i<=n;i++)
22         if (a[i]!=b[i])
23         {flag=1;break;}
24         if (flag==0) printf("YES\\n");
25         else printf("NO\\n");
26     }
27 }

 

以上是关于[BZOJ 5071]小A的数字的主要内容,如果未能解决你的问题,请参考以下文章

BZOJ5071[Lydsy十月月赛]小A的数字 发现性质

ZJ选讲·BZOJ 5071

HDU 5071 Chat(2014鞍山B,模拟)

bzoj5074[Lydsy十月月赛]小B的数字 数学

BZOJ5074[Lydsy十月月赛]小B的数字 数学

bzoj 1257