網教19 微微一笑呵呵呵

2021-07-22 17:45:47 字數 1868 閱讀 9521

題目描述

眾所周知,計算機系搬到中關村校區的學姐們賊好看了,這就導致每天看學姐的人超多,進而導致每天食堂打飯的人數暴漲,所以一到飯點食堂就會出現乙個超長的打飯佇列,考慮到三個女人一台戲以及乙個男生前後都是女生會讓他害羞的情況,我們稱沒有這兩種情況的打飯隊列為呵呵列。有一天數學系的乙個學長去食堂吃飯,飯後無聊突然想知道n個人能夠形成多少呵呵列,機智的他o(瞬)就知道了結果,還將結果模了個666告訴你,而你是計算機系的,能不懂嘛,快拿出電腦解決這個問題吧

輸入

第一行一整數t表示用例組數,每組用例佔一行輸入乙個整數n表示打飯的人數

輸出

對於每組用例,輸出乙個整數佔一行表示呵呵列的數量,結果模666

資料範圍

1<=t<=1000,n<=1000000

樣例輸入1

3樣例輸出6

樣例解釋

男男男 男男女 女男男 **男 男女男 男**

題解:解法一:煮夫教給我的簡單解法

狀態轉移方程是dp[i]=dp[i-1]+dp[i-3]+dp[i-4]。因為dp[i]的**就是dp[i-1]加個男 dp[i-3]加個男男女 dp[i-4]加個男男**。

首先,易知給i-1加男肯定可以加,所以有乙個dp[i-1],如果最後乙個是女的話,最後三個只能是男**和男男女。如果是男男女,那直接加dp[i-3]即可(dp[i-2]要減去一部分,減去之後就是dp[i-3],因為dp[i-3]的排列不影響男男女,所以dp[i-3]不多也不少);如果是男**,那麼倒數第四個必須是男男**,根據上一種推理方法,得知dp[i-4]即是。所以dp[i]=dp[i-1]+dp[i-3]+dp[i-4]

解法二:自己推了乙個小時推出來的

狀態轉移方程是dp[i]=2*dp[i-1]-2*dp[i-5]-dp[i-6](後被煮夫證明和上面式子是一樣的)

首先我乙個乙個算得出dp[1]=2,dp[2]=4,dp[3]=6,dp[4]=9,dp[5]=15,dp[6]=25,在算的過程中我發現凡是男都能加,是女就要考慮一下,所以我就開始找不符合情況的,找出不符合的公式之後直接用2倍dp[i-1]減即可。

最後乙個不能加女的,dp[i-1]的結尾必是女男/**。

如果dp[i-1]的結尾可以是**的話那麼dp[i-3]結尾兩個不能是女男、男女、**,即只能是男男。如果dp[i-3]的結尾是男男,那麼數量就和dp[i-5]一樣,理由跟解法一相同。

如果dp[i-1]的結尾可以是女男,那麼dp[i-3]的結尾只能是男男、男女。男男和上面一樣,數量是dp[i-5],結尾是男女的話,dp[i-5]的結尾不能是女,即只有dp[i-5]結尾是男的部分。而結尾是男的部分就等於dp[i-6](因為男是可以隨便加,只有男生的部分就是減一),所以這一部分是dp[i-5]+dp[i-6]

所以要減去的部分就是2*dp[i-5]+dp[i-6],最終就是dp[i]=2*dp[i-1]-2*dp[i-5]-dp[i-6]。

然而這個公式要注意的一點是,因為結果模了666,所以dp[i-1]是很有可能比2*dp[i-5]+dp[i-6]小的,所以在得結果之前先判斷一下有沒有變成負數。如果變負的話就加乙個666.

ac**:

#include#includeint max(int a, int b)  

int dp[1000005];

int main()

int t;

scanf("%d", &t);

while (t--)

return 0;

}

解法一公式的**應該不需要了吧……

網教30 過橋

題目描述 小a有x隻羊和y只狼,現在,他需要通過一座橋。由於橋面很窄,橋每次只允許通過小a和n只動物。小a很愛動物,所以他每次通過橋時都必須有乙隻動物陪著他,否則他會很寂寞。並且不論是在牆上或者是在橋的兩頭,一旦羊的數量少於狼的數量,狼就會開始吃羊。為了不讓羊被吃掉,又要讓所有動物和小a自己都通過橋...

網教 7 蜜汁序列

題目描述 傳說中有一種蜜汁序列特別甜,所以愛吃甜的強渣學長特別喜歡這種序列。蜜汁序列的定義如下 對於乙個長度為n的序列a1,an,如果這個序列的n個字首和全部非負,即若a1 0,a1 a2 0,a1 a2 an 0,則稱a序列是蜜汁序列。顯然一些蜜汁序列可以分成更多的蜜汁序列,例如1 2這個蜜汁序列...

網教17 有吃的!

婦添小有乙個很厲害的技能 發現吃的!如果有好吃的東西,不論多遠,只要一聞就能知道在 這天他剛剛在程設rejudge完,忽然鼻子一抽 有吃的!他決定馬上趕去吃這麼好吃的東西。語文男為了考驗婦添小的品味,在路中間放了很多饅頭,看他會不會餓的先吃饅頭。婦添小當然不會讓這種雕蟲小計得逞!為了保持自己的品味,...