倍增&矩阵乘法 专题复习
倍增&矩阵乘法 专题复习 PreWords 这两个基础算法我就不多说啦,但是还是要介绍一下" 广义矩阵 "乘法 其实就是把矩阵换成取 \(max\) ,然后都一样。。。 据神仙LBC说:这不显然是对的吗! \[ \ \] \[ \ \] [usaco2007 Nov] relays 奶牛接力跑 离散一下,然后套矩阵乘法 \(a[i][j]\) 记录从 \(i\) 出发到 \(j\) 的最小答案,快速幂即可 const int N=410,P=1e4+7; int n,m,s,t; int a[N],b[N],c[N]; int h[N],cnt; inline void chk(ll &a,ll b) { ((a>b)&&(a=b)); } struct Mat{ ll a[N][N]; void init(){ memset(a,63,sizeof a); } Mat operator * (const Mat x) const { Mat res; res.init(); rep(i,1,cnt) rep(j,1,cnt) rep(k,1,cnt) chk(res.a[i][k],a[i][j]+x.a[j][k]); return res; } } res,x; int main() { n=rd(),m=rd(),s=rd(),t=rd(); rep(i,1,m) { c