HDU 2604 Queuing 矩陣快速冪

2021-07-02 16:42:27 字數 1020 閱讀 1988

題目大意:有2^l個長度為l的字串,字串只能有f或m組合而成,問這些字串中不含有fmf或著fff的字串有多少個

解題思路:設f(n)為字串長度為n,且字串中不包含fmf或者fff的字串個數

假設現在填到第n位了,最後乙個字元如果填的是m的話,那麼f(n-1)的都可以填

最後一位填的如果是f的話,這就要考慮一下了,最後三位的話只可能是mmf,mff,fff,fmf,排除掉fff,fmf,就只剩下兩種情況

如果最後是mmf的話,那麼f(n-3)的都可以填

如果最後是mff的話,再考慮一位,那麼最後可以填充的就變成了fmff,mmff排除掉fmff

最後如果是mmff的,那麼f(n-4)的都可以填

所以可得f(n) = f(n-1) + f(n-3) + f(n-4)

呼叫一下gg學長的圖:

#include

#include

using

namespace

std;

const

int n = 4;

typedef

long

long ll;

struct matrixa, b, tmp;

int l, m;

void init()

matrix matrixmul(matrix x, matrix y)

return tmp;

}void solve()

}int main()

continue;

}l -= 4;

solve();

printf("%i64d\n", (b.mat[0][0] * 9 + b.mat[0][1] * 6 + b.mat[0][2] * 4 + b.mat[0][3] * 2) % m);

}return

0;}

HDU2604 Queuing 遞推 矩陣快速冪

題目鏈結 題意 男為f,女為m,求在長度為l的佇列中不存在fmf,fff這樣子序列的序列的個數。思路 又是遞推題,假設長度為l的佇列中存在的序列個數為f l 那麼考慮最後乙個放的字母,假設最後乙個放m,那麼前l 1個可以隨意排列,即個數為f l 1 如果最後乙個放f,那麼考慮後兩個字母,可能出現的情...

HDU 2604 Queuing 矩陣快速冪

大意 一列人有mf 男,女 問最後不是fmf和fff的排列方式有多少種。思路 就是個遞推,類似推骨牌從最後一位來考慮,ps骨牌 最後的牌排列方式有橫著或者豎著,豎著的話有f n 1 中,否則橫著就是f n 2 此題也是當最後為m有f n 1 當為f時不確定看兩位mf,ff 所以最終的表示式就是f n...

HDU 2604 Queuing(矩陣高速冪)

這題僅僅要推出公式來,構造矩陣就非常easy了。問題是推不出公式來。tat。從遞推的思路考慮。用f n 表示n個人滿足條件的結果。假設最後乙個是m則前n 1人能夠隨意排列,有f n 1 種 假設是f,則考慮後兩位mf和ff,沒有一定滿足或者一定不滿足的狀態,所以繼續考慮一位,考慮後三位mmf,fmf...