HDU4965Fast Matrix Calculation(2014多校第九場)
分析:就是 一個簡單的矩陣快速冪但是要進行一定的處理
(A*B)^n=A*(B*A)^(n-1)*B
B*A為一個k*k的矩陣可以進行矩陣快速冪
程式碼如下:
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long ll;
const int mod = 6;
struct matrix{
int m[6][6];
};
matrix a,b,E;
int n,k;
int A[1001][7],B[7][1001],C[1001][1001],D[1001][1001];
void init(){
for(int i=0;i<6;i++)
for(int j=0;j<6;j++)
E.m[i][j]=(i==j);
}
matrix multi(matrix a, matrix b){
matrix c;
for(int i=0;i<k;i++){
for(int j=0;j<k;j++){
c.m[i][j]=0;
for(int h=0;h<k;h++)
c.m[i][j]=(c.m[i][j]+a.m[i][h]*b.m[h][j])%mod;
}
}
return c;
}
matrix power(matrix c,ll x){
matrix ans=E,a=c;
while(x){
if(x&1){
ans=multi(ans,a);
x--;
}
x>>=1;
a=multi(a,a);
}
return ans;
}
int main()
{
while(~scanf("%d%d",&n,&k)){
if(n==0&&k==0)
break;
for(int i=0;i<n;i++)
for(int j=0;j<k;j++)
scanf("%d",&A[i][j]);
for(int i=0;i<k;i++)
for(int j=0;j<n;j++)
scanf("%d",&B[i][j]);
for(int i=0;i<k;i++){
for(int j=0;j<k;j++){
a.m[i][j]=0;
for(int h=0;h<n;h++)
a.m[i][j]+=B[i][h]*A[h][j]%mod;
a.m[i][j]%=mod;
}
}
/*for(int i=0;i<k;i++){
for(int j=0;j<k;j++)
cout<<a.m[i][j]<<" ";
cout<<endl;
}*/
init();
matrix ans=power(a,n*n-1);
/*cout<<"****"<<endl;
for(int i=0;i<k;i++){
for(int j=0;j<k;j++)
cout<<ans.m[i][j]<<" ";
cout<<endl;
}*/
memset(C,0,sizeof(C));
memset(D,0,sizeof(D));
for(int i=0;i<n;i++){
for(int j=0;j<k;j++){
if(A[i][j]==0) continue;
for(int h=0;h<k;h++){
C[i][h]+=A[i][j]*ans.m[j][h];
}
}
}
for(int i=0;i<n;i++){
for(int j=0;j<k;j++){
if(C[i][j]==0) continue;
for(int h=0;h<n;h++){
D[i][h]+=C[i][j]*B[j][h];
}
}
}
ll sum=0;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
sum+=(D[i][j]%6);
cout<<sum<<endl;
}
return 0;
}
相關文章
- 2024杭電多校第九場
- HDU 4965 Fast Matrix Calculation(矩陣快速冪)AST矩陣
- 【記憶優化搜尋/dp】HDU - 6415 - 杭電多校第九場 - Rikka with Nash Equilibrium優化UI
- 24牛客多校第一場
- [DP]HDU6415(2018多校訓練賽第九場 Problem A) Rikka with Nash Equilibrium 題解UI
- 2024牛客多校第三場
- 2024牛客多校第四場
- 2024牛客多校第七場
- 2024杭電多校第8場
- 2024杭電多校第9場
- 2024牛客多校第10場
- 2014多校聯合第9場1011題||hdu 4970 樹狀陣列陣列
- 2014多校聯合第9場1006||hdu 4965 矩陣乘法和快速冪矩陣
- 【dp+組合數學】hdu 2018 多校第九場 1001 Rikka with Nash Equilibrium hdu 6415UI
- 2024牛客多校第一場 - Mirror Maze
- D-Matrix:2014年5月洗衣機線上市場銷售情況分析
- 2014多校聯合第十場A題||hdu 4971 最小割定理在最大權閉合圖上的應用
- Variance Calculation in Cost Object AccountingObject
- 第九章第九題(幾何:正多邊形)(Geometry: regular polygons)Go
- 杭電多校補題
- ZZJC新生訓練賽第九場題解
- 牛客網暑期ACM多校訓練營(第三場)C Shuffle Cards(splay)ACM
- 2024牛客多校第一場A Bit Common & A Bit More Common
- 2024牛客多校第二場 - C. Red Walking on Grid
- NOIP模擬96(多校29)
- NOIP模擬92(多校25)
- NOIP模擬88(多校21)
- NOIP模擬83(多校16)
- NOIP模擬86(多校19)
- noip多校聯考總結
- springMVC:校驗框架:多規則校驗,巢狀校驗,分組校驗;ssm整合技術SpringMVC框架巢狀SSM
- 2020HDU多校第三場 1005 Little W and Contest
- HDU5831(2016多校第八場)———Rikka with Parenthesis II(水題)
- Matrix Computations
- Matrix Distance
- 2024牛客多校1
- 2024牛客多校6
- 牛客多校H題題解