由于触发i只会影响到i-1和i+1,所以实际总能量应该分为两个部分即(奇数项和偶数项),那么条件就是两条

1.能量总数能作为整数均摊在所有方碑上

2.奇数项的能量平均要和偶数项的能量平均相等

ps:触发奇数项能让偶数项的能量在偶数彼此间交换(奇数两边为偶数)

#include <iostream>
#include <vector>
using namespace std;

bool isTandA(int s1, int s2, int len1, int len2) {
    // 检查平均值是否相等
    bool avgEqual = (s1 * len2) == (s2 * len1);
    // 检查合并后平均值是否为整数
    bool totalAvgInt = ((s1 + s2) % (len1 + len2) == 0);
    return avgEqual && totalAvgInt;
}

int main() {
    int t;
    cin >> t;
    while (t--) {
        int len;
        cin >> len;
        
        if (len == 1) {
            cout << "YES" << endl;
            // 读取并忽略这个数
            int x;
            cin >> x;
            continue;
        }
        
        // 直接在读取时计算和,不需要存储数组
        int s1 = 0, s2 = 0;
        int len1 = 0, len2 = 0;
        
        for (int i = 0; i < len; i++) {
            int x;
            cin >> x;
            if (i == 0 || i % 2 == 0) {
                s1 += x;
                len1++;
            } else {
                s2 += x;
                len2++;
            }
        }
        
        if (isTandA(s1, s2, len1, len2)) {
            cout << "YES" << endl;
        } else {
            cout << "NO" << endl;
        }
    }
    return 0;
}