小八的完美便当
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒 空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M 64bit IO Format: %lld
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
八奈见杏菜在家庭餐厅碰见温水和彦,因为没钱让他代垫,但代垫太多所以提出做便当作出赔偿(杏菜为了偿还餐费会自己做便当给温水和彦,便当的价格由对方估价,依次抵扣),某次吃饭和和彦一起结账时,约好费用五五开,结果又没带够钱,于是原本差点还完的欠款又变得遥遥无期。
(为了狠狠爆温水金币)为了更快的偿还温水和彦的欠款。
八奈见杏菜想用一些食材做出更高价的便当,在多次尝试之后她发现当每个食材的美味值一样都为0时,会做出完美便当,温水会爆更多金币。
对于每一个食材有一个美味值𝑎[𝑖],小八可以进行以下操作任意次。
: 选择(2≤x≤n−1)(2≤x≤n−1)使得
a[x]−=2a[x]−=2
a[x−1]−=1a[x−1]−=1
a[x+1]−=1a[x+1]−=1
你作为小八的朋友请告诉小八,能否让小八做出完美便当。
输入描述
第一行输入为N,N为食材数。 下一行为N个数a[1],a[2],a[3]......a[n]a[1],a[2],a[3]......a[n]a[1] (3≤N≤2e5) (1≤a[i]≤1e9)
输出描述
如果可以做出完美便当输出YES 否则输出NO
示例1
5 3 7 8 7 3
YES
选择a[2]=7,让a[2]=7-6=1 a[1]=3-3=0 a[3]=8-3=5 选择a[4]=7,让a[4]=7-6=1 a[3]=5-3=2 a[5]=3-3=0 选择a[3]=2,让a[3]=2-2=0 a[2]=1-1=0 a[4]=1-1=0 所有材料的美味值都为0,可以做出完美食材
示例2
3 1 3 1
NO
发现做不出完美食材
通过示例
#include<stdio.h> #define N 300000 int pz(long long a[], long long n) { for(int i = 2; i < n; i ++) { a[i] = a[i] - 2 * a[i - 1]; a[i + 1] = a[i + 1] - a[i - 1]; a[i - 1] = 0; /*for(int i = 1; i <= n; i ++) { printf("%d ", a[i]); } printf("\n");*/ } if(a[n] == 0 && a[n - 1] == 0) return 1; else return 0; } int main() { long long n, a[N]; scanf("%lld", &n); for(long long i = 1; i <= n; i ++) { scanf("%lld", &a[i]); } if(pz(a, n) == 1) printf("YES"); else printf("NO"); return 0; }