求降低时间复杂度

P3390 【模板】矩阵快速幂

代码刚刚忘放了 ```cpp #include<iostream> #include<cstdio> #include<cmath> #include<string> #include<cstring> #include<algorithm> #include<cassert> #include<stack> #include<queue> #include<vector> #include<map> #include<cstdlib> using namespace std; #define ll long long #define ull unsigned long long #define int ll int read() { int now=0,nev=1; char c=getchar(); while(c<'0' || c>'9') { if(c=='-') nev=-1; c=getchar(); } while(c>='0' && c<='9') { now=(now<<1)+(now<<3)+(c&15); c=getchar(); } return now*nev; } const int MAXN=1010; const int mod=1e9+7; int n,k; struct Matrix { int t[MAXN][MAXN]; }a; Matrix mul(Matrix a,Matrix b) { Matrix res; for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) { res.t[i][j]=0; for(int k=1;k<=n;k++) res.t[i][j]=(res.t[i][j]+a.t[i][k]*b.t[k][j])%mod; } } return res; } Matrix quickpow(Matrix a,int k) { Matrix res; for(int i=1;i<=n;i++) res.t[i][i]=1; while(k) { if(k&1) res=mul(res,a); a=mul(a,a); k>>=1; } return res; } signed main() { n=read(),k=read(); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) a.t[i][j]=read(); } a=quickpow(a,k); for(int i=1;i<=n;i++) { for(int j=1;j<=n;j++) printf("%lld ",a.t[i][j]%mod); printf("\n"); } return 0; } ```
by WYZ20030051 @ 2023-09-23 08:18:16


@[WYZ20030051](/user/526895) 把 `#define int ll` 删掉再手动把一些地方改成 `ll` 就可以常数小一点,但是这个速度也还可以吧(
by MarSer020 @ 2023-09-23 08:20:15


@[MarSer020](/user/475112) 别人总时长三百多毫秒,但是我总时长3秒wwww
by WYZ20030051 @ 2023-09-23 08:20:53


@[MarSer020](/user/475112) ok了ok了,总时间降到了500ms,很满意了。不过 ```cpp #define int ll ``` 也不至于把常数拉到那么大吧
by WYZ20030051 @ 2023-09-23 08:26:15


@[WYZ20030051](/user/526895) 这个常数是真的很大/kel
by MarSer020 @ 2023-09-23 08:29:23


@[MarSer020](/user/475112) 明白了,感谢 dalao,orz
by WYZ20030051 @ 2023-09-23 08:31:29


@[WYZ20030051](/user/526895) 我纯long long 总用时500+ms
by Regenbogen_71 @ 2023-09-27 07:29:53


@[Regenbogen_71](/user/1075502) 这我不清楚,但是这题我把全局 $long long$ 改成部分变量 $long long$ 之后时间就降成正常的了
by WYZ20030051 @ 2023-09-27 07:37:26


@[WYZ20030051](/user/526895) 指针跑飞快 [CodeHere](https://www.luogu.com.cn/paste/0m9yt2cm) [Record](https://www.luogu.com.cn/record/123743505)
by _Regenbogen_ @ 2023-09-27 07:46:26


@[_Regenbogen_](/user/791638) %%%,但是指针我是真不喜欢用
by WYZ20030051 @ 2023-09-27 08:44:53


|