csp模拟1st_B-咕咕东想吃饭

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";
} 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值