Week4 CSP M1 B 咕咕東想吃飯 模擬

2021-10-04 03:55:29 字數 1492 閱讀 9017

演算法/思路分析

**

咕咕東考試周開始了,考試周一共有n天。他不想考試周這麼累,於是打算每天都吃頓好的。他決定每天都吃生煎,咕咕東每天需要買ai個生煎。但是生煎店為了刺激消費,只有兩種購買方式:①在某一天一次性買兩個生煎。②今天買乙個生煎,同時為明天買乙個生煎,店家會給乙個券,第二天用券來拿。沒有其餘的購買方式,這兩種購買方式可以用無數次,但是咕咕東是個節儉的好孩子,他訓練結束就走了,不允許訓練結束時手裡有券。咕咕東非常有錢,你不需要擔心咕咕東沒錢,但是咕咕東太笨了,他想問你他能否在考試周每天都能恰好買ai個生煎。

輸入兩行,第一行輸入乙個正整數n(1<=n

<=100000),表示考試周的天數。

第二行有n個數,第i個數ai

(0<=ai

<=10000)ai表示第ii天咕咕東要買的生煎的數量。

如果可以滿足咕咕東奇怪的要求,輸出"yes",如果不能滿足,輸出「no」。(輸出不帶引號)

1 2 1 2

yes

1 0 1

no

該題為一道模擬題。分析題意可知:若第i天需要買偶數個生煎,則當天即可購買(0需結合後一天/前一天特判);若第i天需要買奇數ai個生煎,則當天可購買ai-1個生煎,剩下1個需與前一天或後一天分別購買。按第i天從後往前迴圈,分類討論如下:

(1)ai為偶數,當天即可購買

(2)ai為奇數,i為第一天,無法購買

(3)ai為奇數,ai-1為0,無法購買(ai-2 0 1)

(4)ai為奇數,ai-1為奇數,可以購買(1 1),下次迴圈 i = i -2

(5)ai為奇數,ai-1為非零偶數,ai-2為奇數,可以購買(1 2 1),下次迴圈 i = i - 3

(6)ai為奇數,ai-1為非零偶數,ai-2為偶數,則將ai-1設為1(即1221 → 1210),即在買完ai的同時將ai-1轉化為奇數,之後再按(2)~(5)進行判斷

#include

#include

#include

#include

#include

#include

using namespace std;

const

int maxn =

1e5+10;

int a[maxn]

, n;

intdoit()

//a[i-1]為非零偶數

elseif(

(a[i-1]

%2)==

0)//a[i-2]為偶數

else}}

}return type;

}int

main()

Week4 CSP M1 B 咕咕東想吃飯

咕咕東考試周開始了,考試周一共有n天。他不想考試周這麼累,於是打算每天都吃頓好的。他決定每天都吃生煎,咕咕東每天需要買ai個生煎。但是生煎店為了刺激消費,只有兩種購買方式 在某一天一次性買兩個生煎 今天買乙個生煎,同時為明天買乙個生煎,店家會給乙個券,第二天用券來拿。沒有其餘的購買方式,這兩種購買方...

Week 4 CSP M1 咕咕東想吃飯

咕咕東考試周開始了,考試周一共有n天。他不想考試周這麼累,於是打算每天都吃頓好的。他決定每天都吃生煎,咕咕東每天需要買 a i 個生煎。但是生煎店為了刺激消費,只有兩種購買方式 在某一天一次性買兩個生煎。今天買乙個生煎,同時為明天買乙個生煎,店家會給乙個券,第二天用券來拿。沒有其餘的購買方式,這兩種...

CSP M1 B咕咕東想吃飯

考試周共有n天,每天需要買ai個生煎,只有兩種購買方案,一是某一天一次性買兩個,二是今天買乙個,同時為明天買乙個,店家給乙個券,第二天用券來拿。同時考試周結束時不允許手上有券。請給出是否每天都能恰好買ai個生煎。如果第i天要買的ai為偶數則可以選擇方案一購買,且對其他天不產生影響,若ai為奇數則選擇...