小八的完美便当

时间限制: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;
}

全部评论

相关推荐

2024-11-21 14:22
门头沟学院 硬件开发
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务