【題目描述】
jzabc對多公尺諾骨牌有很大的興趣,然而他的骨牌比較特別,只有黑的和白的。他覺得如果存在連續三個骨牌是同種顏色的,那這個骨牌排列就是不美觀的。現在他有
n個骨牌要排列,他想知道不美觀的排列的個數。他想請你幫忙進行統計不美觀排列的個數。
【輸入格式】
只有乙個正整數,即要排列的骨牌的個數。
【輸出格式】
乙個數,即不美觀的排列的個數。
【輸入樣例】 4
【輸出樣例】 6
解釋:有6
中不美觀的排列。
【資料規模】
對於20%
的資料,滿足
n<=60
對於50%
的資料,滿足
n<=600
對於100%
的資料,滿足
n<=20000
一開始不會 就沒再做
後來小夥伴們提醒了一下有規律
於是打表1-10
發現g(i+1)可以由gi*2+乙個具有斐波那契數列性質的數列中某一項推出
所以遞推出的gi
由於資料太大 用到了壓8位高精度
#include#include#includeusing namespace std;
int f[4][811];
int z[811];
int m,n=1,a,b,c;
void print(int s[811])
}void addf()
void cheng()
void jia()
int main()
{ freopen("domino.in","r",stdin);
freopen("domino.out","w",stdout);
scanf("%d",&m);
if(m<3)
{cout<<0<
別人的題解是
考慮美觀的情況,設f[i]為i個骨牌的排列中完美排列的數量。若在第i個位置上放與i-1個骨牌顏色相同的骨牌,則情況數為f[i-2],否則為f[i-1],那麼f[i]:=f[i-1]+f[i-2]。由二進位制的數量可得,此時不完美排列個數即為g[i]:=2^n-f[i]。
這個想法簡直是dbl...瞬間就跪爛了
我的理解是
當i與i-1顏色不同時
不會影響完美排列數 所以f[i]=f[i-1]
當顏色相同時
就有可能影響到完美排列
i-3i-2 i-1i
x0 11這種情況下 f[i]=f[i-1]=f[i-2] 因為從i-1到i顏色相同 i-1和i對f[i]沒做出貢獻 與f[i-2]相比 f[i]既沒增加也沒減少
x1 11這種情況下f[i]=f[i-2] 因為從i-2到i顏色相同 i-1和i對f[i]沒做出貢獻 與f[i-2]相比 f[i]既沒增加也沒減少
所以f[i]=f[i-1]+f[i-2]
不完美的就是2^n-f[i]
orz
多公尺諾骨牌
100張多公尺諾骨牌整齊地排成一列,按順序編號為1 2 3 4 99 100。第一次拿走所有的奇數字置上的骨牌,第二次再從剩餘的骨牌中拿走所有奇數字置上的骨牌,依次類推,請問最後剩下的一張骨牌的編號是多少 a.48 b.50 c.52 d.64 正確答案 d.答對了嗎?答對了嗎?答對了嗎?第一次拿走...
多公尺諾骨牌
現有n塊 多公尺諾骨牌 s1,s2,s3,sn水平放成一排,每次骨牌si包含左右兩個部分,每個部分賦予乙個非負整數值,如下圖所示為包含6塊骨牌的序列.骨牌可做180度旋轉,使得原來在左邊的值變到右邊,而原來右邊的值移到左邊,假設不論si如何旋轉,l i 總是儲存si左邊的值,r i 總是儲存si右邊...
多公尺諾骨牌
在課堂上,我們分析了棋盤覆蓋問題,同學們也看了我的程式執行的情況,今天我們來看一下另外乙個覆蓋問題。今天的問題是這樣的 用n個2x1的矩形 這種矩形我們以後稱之為骨牌或多公尺諾 覆蓋2xn的棋盤,有多少種不同的覆蓋法?input 本問題有多組測試資料,對於每一組測試資料,輸入只有一行n 意義如上所述...