题意:
一共有n天,每天需要买ai个生煎。共有两种购买方式:在某一天一次性买两个,或者为今明两天各买一个。每种购买方式都可以使用无数次。请问是否能每天恰好买ai个生煎。(最后一天不能用第二种购买方式)
思路:
每天先两个两个买,如果还剩一个,就用第二种方式购买,同时第二天要购买的生煎-1。若要购买的生煎<0或者最后一天使用了第二种购买方式,则不能每天恰好买ai个生煎。
总结:
一道模拟题,对应CSP T2,应注意最后一天的特判。
代码:
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
int *a=new int [n];
for(int i=0;i<n;i++)
cin>>a[i];
int ans=1; //YES
//处理第一天
a[0]=a[0]%2;
if(a[0]==1) a[1]--;
//处理中间
for(int i=1;i<n-1;i++)
{
if(a[i]<0)
{
ans=0;
break;
}
//先两个两个买
a[i]=a[i]%2;
//单个买
if(a[i]==1) a[i+1]--;
}
//处理最后一天
if(a[n-1]<0) ans=0;
a[n-1]=a[n-1]%2;
if(a[n-1]==1) ans=0;
if(ans==1) cout<<"YES"<<endl;
else if(ans==0) cout<<"NO"<<endl;
return 0;
}