咕咕東想吃飯

2021-10-03 21:37:35 字數 1833 閱讀 6665

咕咕東考試周開始了,考試周一共有n天。他不想考試周這麼累,於是打算每天都吃頓好的。他決定每天都吃生煎,咕咕東每天需要買a

ia_i

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

ia_i

ai​個生煎。

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

<=n

<

=100000

)n(1<=n<=100000)

n(1<=n

<=1

0000

0),表示考試周的天數。

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

0<=a

i<

=10000

)a_i(0<=a_i<=10000)

ai​(

0<=a

i​<=1

0000

)表示第i

ii天咕咕東要買的生煎的數量。

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

412

12

yes
310

1

no
\hspace

首先看看輸出no的條件:最後手裡沒有券。注意題目說明了券只能第二天用,那第三天就會變成廢券,留在了手中。

\hspace

這個題需要對每天購買數量進行分析,數量分為買1個,買2個和不買(因為2個以上的都可以通過第一種消費方式將其買掉)。

\hspace

首先初始化條件是手中沒有券。

\hspace

1.如果今天買乙個,此時手中有券,那麼就用掉(不用掉就失效了,咕咕東手中就會有一張廢券)。如果沒有券,那麼使用第二種消費方式,就獲得了一張券。

\hspace

2.如果今天不買,手裡沒有券沒事,但是如果手裡有券,這個券必定要浪費掉了,直接跳出。

\hspace

3.如果今天買兩個,不用處理。因為如果手裡沒有券,我們就用第一種消費方式買。如果有券,我們使用券,並且再使用第二種消費方式來買另外乙個,我們就又獲得了一張券。這樣券的情況是不會發生變化的。

\hspace

最後看看手裡有沒有券來輸出yes或no。

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace std;

const

int maxn=

100000+10

;int n,a[maxn]

;bool flag=

false

;//判斷此時是否有券

intmain()

else

if(a[i]==0

&& flag)

break

;//今天不買,但是手裡有券

//買偶數個不用管,有沒有券,券的狀態都不變}if

(flag) cout<<

"no"

"yes"

}

咕咕東想吃飯

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

B 咕咕東想吃飯

一共有n天,每天買生煎,每天需要買ai個生煎。但是生煎店為了刺激消費,只有兩種購買方式 在某一天一次性買兩個生煎。今天買乙個生煎,同時為明天買乙個生煎,店家會給乙個券,第二天用券來拿。沒有其餘的購買方式,這兩種購買方式可以用無數次。問能否在n天內每天都能恰好買ai個生煎。第一行輸入乙個正整數n。第二...

B 咕咕東想吃飯(貪心演算法)

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