首页 > 其他 > 详细

[BZOJ 5071] 小A的数字

时间:2018-08-25 20:54:02      阅读:152      评论:0      收藏:0      [点我收藏+]

题目传送-BZOJ5071

题意:

给定两个数组\(A\),\(B\).
可以对\(A\)进行操作:
选定\(i(2 \le i \le n)\),使得
\((a_{i-1},a_i,a_{i+1})\rightarrow(a_{i-1}+a_i,-a_i,a_{i+1}+a_i)\)
问能不能经过若干次操作使\(A=B\)
\(n \le 100000\)

题解:

考虑一次操作对前缀和(sum)的影响
如果对i操作,那么就相当于\(swap(sum_{i-1},sum_i)\)
然后处理出sum,比较一下就行了

过程:

一切顺利

代码:

const int N=100010;
ll a[N],b[N];
int n;
signed main() {
    int T; read(T);
    while(T--) {
        read(n);
        for(int i=1;i<=n;i++) read(a[i]),a[i]+=a[i-1];
        for(int i=1;i<=n;i++) read(b[i]),b[i]+=b[i-1];
        sort(a+1,a+n+1); sort(b+1,b+n+1);
        bool fl=1;
        for(int i=1;i<=n && fl;i++)
            fl&=(a[i]==b[i]);
        puts(fl ? "YES" : "NO");
    }
    return 0;
}

用时:5min

[BZOJ 5071] 小A的数字

原文:https://www.cnblogs.com/functionendless/p/9535250.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!