poj 3735 (矩陣快速冪)

2022-04-04 16:28:41 字數 1502 閱讀 3725

題意:有n只貓咪,開始時每只貓咪有花生0顆,現有一組操作,由下面三個中的k個操作組成:

1. g i 給i只貓咪一顆花生公尺

2. e i 讓第i只貓咪吃掉它擁有的所有花生公尺

3. s i j 將貓咪i與貓咪j的擁有的花生公尺交換

現將上述一組操作做m次後,問每只貓咪有多少顆花生?

解題報告:

view code

1

//file name: 3735.cpp2//

author: missa3//

created time: 2013/2/7 星期四 12:35:55

45 #include6 #include7 #include8 #include9 #include10 #include11 #include12 #include

13 #include14 #include15 #include16

using

namespace

std;

17#define ll long long

18ll n,m,k;

19//

**********矩陣快速冪********************

20const

int maxn=105;//

矩陣最大範圍

21//

int n,m;

//矩陣n*m

22struct

mat23

29void unit()//

單元矩陣n*n矩陣的時候需要

3035

};36

mat a;

37void

init()

3841

mat mul(mat a,mat b)

4254}55

}56return

c;57

}58 mat mpow(mat a,ll k)//

非遞迴實現

5969

return

e;70}71

//***********矩陣快速冪*******************

7273

intmain()

7489

else

if(o[0]=='e'

)9095else

96101

}102

if(m==0

)103

110 a=mpow(a,m);

111 printf("

%lld

",a.mat[0][1

]);112

for(int i=2;i<=n;i++)

113 printf("

%lld

",a.mat[0

][i]);

114 printf("\n"

);115

}116

return0;

117 }

構造矩陣 矩陣快速冪 POJ3735

這題題意如下,有n 只貓咪,三種關於花生的命令 得花生,吃花生,交換花生 給出一套命令,重複 n 次,問最後每只貓咪得到多少花生。m那麼大,毫無疑問,矩陣快速冪。先構造乙個單位矩陣,因為只需在單位矩陣上進行操作,然後用操作完之後得到的矩陣乘以初始的狀態就得到最終的狀態。看下圖 第 i 只貓咪得花生就...

poj 3735 矩陣行列變換

這題是矩陣運算的經典題目。可以將peanut初始化為,然後對peanut矩陣進行變換 行變換,可以對單位矩陣操作,然後放在左邊乘以peanut。列變換則放在右邊 還有矩陣的運算符合結合率,不符合交換率。進行矩陣的n次方運算的時候,我一直沒用二進位制的思想,一直在模擬遞迴的過程,結果不斷超時,感覺複雜...

矩陣快速冪 快速冪模板poj3070

poj3070 題意就是通過,矩陣求斐波那契數列數列 如果不知道遞推怎麼來的,或者不知道矩陣快速冪的,可去 看不懂打我 其實矩陣快速冪和快速冪乙個思想來的,都差不多,矩陣快速冪就是把快速冪的乘法運算換成矩陣乘法,再加上一點矩陣知識。快速冪模板 define ll long long int ll q...