首页 > 其他分享 >【模板】矩阵运算

【模板】矩阵运算

时间:2024-11-04 10:34:16浏览次数:3  
标签:const 运算 int res 矩阵 operator rec 模板 Matrix

不进行没必要的解释,主要记录模板。

struct Matrix
{
    int n, m, rec[N][N];	// 矩阵的长,宽和二维数组
    
    Matrix(int _n, int _m) { n = _n, m = _m, memset(rec, 0, sizeof rec); }	// 初始化函数
    void reset() { n = 0, m = 0, memset(rec, 0, sizeof rec); }
    
    int* operator [] (int i) { return rec[i]; }	// 重载数组
    const int* operator [] (int i) const { return rec[i]; }	// 重载数组

    friend Matrix operator * (const Matrix &a, const Matrix &b)	// 矩阵乘法
    {
        Matrix res(a.n, b.m);
        for (int k = 0; k < a.m; k ++)
            for (int i = 0; i < res.n; i ++)
                for (int j = 0; j < res.m; j ++)
                    res[i][j] = (res[i][j] + a[i][k] * b[k][j]) % mod;
        return res;
    }
    
    friend Matrix operator ^ (Matrix A, int k)  // 矩阵快速幂
    {
        Matrix res(A.n, A.m);
        for (int i = 0; i < res.n; i ++) res[i][i] = 1;
        while (k)
        {
            if (k & 1) res = res * A;
            A = A * A, k >>= 1;
        }
        return res;
    }
};

标签:const,运算,int,res,矩阵,operator,rec,模板,Matrix
From: https://www.cnblogs.com/ThySecret/p/18523431

相关文章

  • 【笔记/模板】最近公共祖先(LCA)
    最近公共祖先(LCA)定义最近公共祖先(LowestCommonAncestor)简称LCA。对于一个树上的两个节点的最近公共祖先,是这两个点中的公共祖先里面离根最远的一个。性质可见OIWiki。向上标记法过程在两点中取得深度较大的一个点,让它不停的向上跳,同时标记所经过的每一个点,直到根节点,接......
  • 【笔记/模板】最小生成树
    www.luogu.com.cn概念/定义一个连通图的生成树是一个极小的连通子图,它包含图中全部的\(n\)个顶点,但只有构成一棵树的\(n-1\)条边。而最小生成树就是一个带权图的生成树,并且使得原图中边的权值最小的生成树,所谓最小是指边的权值之和小于或者等于其它生成树的边的权值之和。......
  • 【模板】Floyd算法
    Floyd算法原理Floyd算法用来求出任意两个节点之间的最短路。优点:代码少,思维简单,适用于除了负环以外的任何图。缺点:时间复杂度为\(O(n^3)\),空间复杂度为\(O(n^2)\)。而Floyd的核心原理是用动态规划实现的,定义一个二维数组\(f_{i,j}\),遍历图上的所有点\(k\),可以得......
  • PbootCMS模板调用友情链接标签代码
    适用范围:全站任意地方标签作用:用于依次输出指定分组的友情链接调用代码:html {pboot:linkgid=*num=*}<ahref="[link:link]"title="[link:name]"><imgsrc="[link:logo]"></a>{/pboot:link}控制参数:gid=*:分组,必填num=*:数量,非必填,默认为10个可使用的列表......
  • PbootCMS模板调用幻灯片轮播图标签
    幻灯片轮播图列表:{pboot:slidenum=3gid=1}<ahref="[slide:link]"target="_blank"><imgsrc="[slide:src]"alt="[slide:title]"/></a>{/pboot:slide}控制参数:gid=*:分组,必填。num=*:数量,非必填,默认为5个。可用列表标......
  • pbootcms模板英文站搜索效果页面包屑显示优化
    打开 \apps\home\controller\SearchController.php 文件,根据版本替换代码:2.1.1版本:if(cookie('lg')=='cn'){//中文处理}else{//英文处理$content=str_replace('{pboot:pagetitle}',$this->config('search_title')?:......
  • 集合/二进制运算合集
    RT,主要内容涉及有高维前缀和(子集DP),高维后缀和,高维差分,快速沃尔什变换,子集卷积。参考资料:link1link2知识点合集高维前缀和用于求解\(f(S)=\sum_{T\subseteqS}g(T)\)。for(inti=0;i<(1<<n);i++)f[i]=g[i];for(intj=0;j<n;j++){for(inti=0;i<(1<<n)......
  • 【产品经理简历模板】绿色清新产品经理求职简历模板下载
    ​ 产品经理求职简历模板下载 绿色清新产品经理求职简历免费下载,可编辑WORD格式简历模板免费下载直接修改,高效-便捷-实用,满足求职者的简历制作需求,简历编辑制作不求人,有效提升求职效率!找绿色清新产品经理求职简历电子版模板免费下载就来免费简历模板下载!​......