題意:有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...