B. Rudolf and 121

黑屿白發表於2024-03-16

題解

由於a1的值只能透過對a2的操作進行消除,所以我們可以先根據a1的值迭代出a2,a3的值,然後此時的a2,只能透過a3的操作進行消除.....以此類推,如果其中發現有ai的值<0就輸出NO。

code

#include<bits/stdc++.h>
using namespace std;
const int N=2e5+5;
int a[N];
int main(){
//    freopen("input.txt","r",stdin);
    int t;
    cin>>t;
    while (t--){
        int n;
        bool bol=true;
        cin>>n;
        for (int i=1;i<=n;i++) cin>>a[i];
        for (int i=2;i<=n-1;i++){
            a[i]-=2*a[i-1];
            a[i+1]-=a[i-1];
            if (a[i]<0 || a[i+1]<0){
                bol=false;
                break;
            } 
        }
        if (a[n-1]>0 || a[n]>0) bol=false;
        if (bol) cout<<"YES\n";
        else cout<<"NO\n";
    }
    return 0;
}