HDU多校賽第9場 HDU 4965Fast Matrix Calculation【矩陣運算+數學小知識】,hdu4965fast

來源:互聯網
上載者:User

HDU多校賽第9場 HDU 4965Fast Matrix Calculation【矩陣運算+數學小知識】,hdu4965fast

難度上,,,確實,,,不算難

問題是有個矩陣運算的最佳化

題目是說給個N*K的矩陣A給個K*N的矩陣B(1<=N<=1000 && 1=<K<=6),先把他們乘起來乘為C矩陣,然後算C^(N*N)

相當於

ABABABABABABAB...=(AB)^(N*N)

不如

A(BA)^(N*N-1)B

因為BA乘得K*K的矩陣,K是比較小的

 

 

#include <cstdio>#include <cstdlib>#include <cstring>#include <cmath>#include <algorithm>#include <iostream>using namespace std;int a[1111][1111];int b[1111][1111];int c[1111][1111];int tmp[1111][1111];int sum[1111][1111];void TIMES(int K,int N,int M,int aa[][1111],int bb[][1111],int cc[][1111]){memset(tmp,0,sizeof(tmp));for(int i=1;i<=K;i++){for(int j=1;j<=M;j++){for(int k=1;k<=N;k++){tmp[i][j]=(tmp[i][j]+aa[i][k]*bb[k][j]%6)%6;}}}for(int i=1;i<=K;i++)for(int j=1;j<=M;j++)cc[i][j]=tmp[i][j]%6;}void quick(int cc[][1111],int mi,int n){for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(i==j) sum[i][j]=1;else sum[i][j]=0;while(mi){if(mi&1)TIMES(n,n,n,cc,sum,sum);TIMES(n,n,n,cc,cc,cc);mi>>=1;}}int main(){#ifndef ONLINE_JUDGEfreopen("G:/in.txt","r",stdin);//freopen("G:/myout.txt","w",stdout);#endifint N,K;while(~scanf("%d%d",&N,&K)){if(N==0 && K==0) return 0;for(int i=1;i<=N;i++){for(int j=1;j<=K;j++){scanf("%d",&a[i][j]);}}for(int i=1;i<=K;i++){for(int j=1;j<=N;j++){scanf("%d",&b[i][j]);}}TIMES(K,N,K,b,a,c);quick(c,N*N-1,K);TIMES(N,K,K,a,sum,sum);TIMES(N,K,N,sum,b,sum);int ans=0;for(int i=1;i<=N;i++)for(int j=1;j<=N;j++)ans+=sum[i][j];cout<<ans<<endl;}}


 




聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.