警示后人,如果你最后一个点TLE

P3390 【模板】矩阵快速幂

不需要吧? ```cpp #include<bits/stdc++.h> #define ll long long using namespace std; int P=1e9+7; int n; ll k; const int N=110; ll f[N][N],ans[N][N]; inline void qm2() { ll f2[N][N]; memset(f2,0,sizeof(f2)); for(int k=1; k<=n; k++) { for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { f2[i][j]=(f2[i][j]+f[i][k]*f[k][j])%P; } } } for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { f[i][j]=f2[i][j]; } } } inline void qm1() { ll f2[N][N]; memset(f2,0,sizeof(f2)); for(int k=1; k<=n; k++) { for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { f2[i][j]=(f2[i][j]+ans[i][k]*f[k][j])%P; } } } for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { ans[i][j]=f2[i][j]; } } } signed main() { cin>>n>>k; for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { cin>>f[i][j]; } } for(int i=1; i<=n; i++) { ans[i][i]=1; } while(k) { if(k&1) qm1(); qm2(); k>>=1; } for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++) { cout<<ans[i][j]%P<<" "; } cout<<endl; } return 0; } ```
by Rubbish_Du @ 2024-03-31 21:04:25


@[Rubbish_Du](/user/1169161) 可是我初始化就直接是一次方了啊
by Guojq @ 2024-03-31 21:08:57


@[Guojq](/user/1169136) 6
by Rubbish_Du @ 2024-03-31 21:16:47


|