HDU 2604 Queuing 矩陣快速冪

2021-07-10 23:51:26 字數 1297 閱讀 5883

大意:一列人有mf(男,女)問最後不是fmf和fff的排列方式有多少種。

思路:就是個遞推,類似推骨牌從最後一位來考慮,(ps骨牌:最後的牌排列方式有橫著或者豎著,豎著的話有f(n-1)中,否則橫著就是f(n-2))。此題也是當最後為m有f(n-1),當為f時不確定看兩位mf,ff

所以最終的表示式就是f(n)=f(n-1)+f(n-3)+f(n-4);

接下來就是構造矩陣的問題了,那麼直接和斐波那契額數列一樣

錯了從上到下應該是9 6 4 2

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

#define eps 1e-8

#define ls l,mid,rt<<1

#define rs mid+1,rt,rt<<1|1

#define ll __int64

using

namespace

std;

int mod,n;

int mp[10]=;

struct nodeq;

node matrix_pow(node a,node b)}}

return t;

}node so(node q,int m)

q = matrix_pow(q,q);

m = m >> 1;

}return tmp;

}int main()

for(i = 0;i < 4;++ i)

if(i!=1)

q.r[0][i] = 1;

else

q.r[0][1] = 0;

for(i = 1; i < 4;++ i)

for(j = 0;j < 4;++ j)

if(i-1 == j)

q.r[i][j] = 1;

else

q.r[i][j] = 0;

q = so(q,n - 4);//之前已經推好了4組所以-4

int ans = 0;

for(i = 0;i < 4 ;++ i)

printf("%d\n",ans);

}return

0;}

HDU2604 Queuing 遞推 矩陣快速冪

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

HDU 2604 Queuing 矩陣快速冪

題目大意 有2 l個長度為l的字串,字串只能有f或m組合而成,問這些字串中不含有fmf或著fff的字串有多少個 解題思路 設f n 為字串長度為n,且字串中不包含fmf或者fff的字串個數 假設現在填到第n位了,最後乙個字元如果填的是m的話,那麼f n 1 的都可以填 最後一位填的如果是f的話,這就...

HDU 2604 Queuing(矩陣高速冪)

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