赞
踩
Codeforces Round #696 (Div. 2) 全文见:https://blog.csdn.net/qq_43461168/article/details/112856420
#include <iostream> #include <bits/stdc++.h> #define int long long #define mk make_pair #define gcd __gcd using namespace std; const double eps = 1e-10; const int mod = 1e9+7; const int N = 3e5+7; int n,m,k,t = 1,cas = 1; int a[N],b[N]; int sel = 0; int pre[N]; int suf[N]; signed main(){ cin>>t; while(t--){ cin>>n; for(int i = 1 ; i <= n ;i ++) cin>>a[i]; for(int i= 1; i <= n ; i ++){ if(pre[i-1] == -1 || a[i] < pre[i-1]){ pre[i] = -1; }else{ pre[i] = a[i]-pre[i-1]; } } suf[n+1] = 0; for(int i = n ; i >= 1; i --){ if(suf[i+1] == -1 || a[i] < suf[i+1]){ suf[i] = -1; }else{ suf[i] = a[i]-suf[i+1]; } } int res = 0; if(pre[n] == 0) res = 1; for(int i = 1; i < n ; i ++){ if(pre[i-1] == -1 || suf[i+2] == -1) continue; else{ // swap a[i] with a[i-1] if(a[i] >= suf[i+2] && a[i+1] >= pre[i-1] && a[i+1]-pre[i-1] == a[i]-suf[i+2]){ res = 1;break; } } } puts(res ? "YES" : "NO"); cas++; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。