大意:一列人有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...