B-咕咕东想吃饭
题目描述
考试周开始了,考试周一共有n天。咕咕东决定考试周每天都吃生煎,小明每天需要买ai个生煎。但是生煎店为了刺激消费,只有两种购买方式:①在某一天一次性买两个生煎。②今天买一个生煎,同时为明天买一个生煎,店家会给一个券,第二天用券来拿。没有其余的购买方式,这两种购买方式可以用无数次,但是咕咕东是个节俭的好孩子,他考试结束就走了,不允许考试结束时手里有券。咕咕东遇到点麻烦,所以他想问你他能否在考试周每天都能恰好买ai个生煎。(1≤n≤100000,1≤ai≤10000)(1≤n≤100000,1≤ai≤10000) 。另外前一天购买获得的券必须在第二天全部用掉。
intput:
第一行输入一个数,代表考试有n天,第二行输入n个数,表示每天所吃的生煎数。
output:
输出YES或NO,YES代表可以在每天恰好能买ai个生煎,NO反之。
题目思路
在这题中,我使用了一个变量b来记录第二天咕咕东手中券的个数为1还是0。然后每次将第二天需要买的生煎数量减去b然后如果减去后的生煎数量是偶数则就直接使用方案一买就行,如果是奇数则使用一次方案二,其它的都是用方案一。这样就可以保证每天咕咕东手中券的个数都是1个或者是0个。
代码实现
#include <iostream>
using namespace std;
int b; //咕咕东今天有没有券
int ans;
int a[100000];
int main()
{
int n;
cin >> n;
for(int i = 0; i < n; i++)
cin >> a[i];
b = 0;
ans = 1;
for(int i = 0; i < n; i++)
{
a[i] -= b;
if(a[i] < 0)
{
cout << "NO";
return 0;
}
if(a[i] % 2 == 1) b = 1;
else b = 0;
}
if(b == 1) cout << "NO";
else cout << "YES";
}