整理的算法模板合集: ACM模板


目录

  • luogu P3390 【模板】矩阵快速幂
  • AcWing 1303. 斐波那契前 n 项和
  • AcWing 1304. 佳佳的斐波那契
  • AcWing 1305. GT考试

luogu P3390 【模板】矩阵快速幂

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>using namespace std;
typedef long long ll;
const int N = 107, mod = 1e9 + 7;int n, m;
int a[N][N];
int ans[N][N];
ll k;void mul(int c[][N], int a[][N], int b[][N])
{int tmp[N][N] = {0};for(int i = 1; i <= n; ++ i){for(int j = 1; j <= n; ++ j){for(int k = 1; k <= n; ++ k){tmp[i][j] = (tmp[i][j] + (ll)a[i][k] * b[k][j]) % mod;}}}memcpy(c, tmp, sizeof tmp);
}int main(){scanf("%d%lld", &n, &k);for(int i = 1; i <= n; ++ i)for(int j = 1; j <= n; ++ j)scanf("%d", &a[i][j]);for(int i = 1; i <= n; ++ i)ans[i][i] = 1;while(k){if(k & 1) mul(ans, ans, a);mul(a, a, a);k >>= 1;}for(int i = 1; i <= n;puts(""), ++ i)for(int j = 1; j <= n; ++ j)printf("%d ", ans[i][j]);return 0;
}

AcWing 1303. 斐波那契前 n 项和

#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>using namespace std;
typedef long long ll;
const int N = 3;int n, m;
int a[N][N];
int f[N];void mul(int c[], int a[], int b[][N])
{int tmp[N] = {0};for(int j = 0; j < N; ++ j){//2的行for(int k = 0; k < N; ++ k){//1的列2的行,1的列=2的行//只有一行,求这一行的每一列tmp[j] = (tmp[j] + (ll)a[k] * b[k][j]) % m;}}memcpy(c, tmp, sizeof tmp);
}void mul(int c[][N], int a[][N], int b[][N])
{int tmp[N][N] = {0};for(int i = 0; i < N; ++ i){for(int j = 0; j < N; ++ j){for(int k = 0; k < N; ++ k){tmp[i][j] = (tmp[i][j] + (ll)a[i][k] * b[k][j]) % m;}}}memcpy(c, tmp, sizeof tmp);
}int main()
{scanf("%d%d", &n, &m);int f1[N] = {1, 1, 1};int a[N][N] = {0, 1, 0,1, 1, 1,0, 0, 1};n -- ;//这里是从第一项开始的,所以要--;while(n){if(n & 1) mul(f1, f1, a);mul(a, a, a);n >>= 1;}printf("%d\n", f1[2]);return 0;
}

AcWing 1304. 佳佳的斐波那契



计算公式为:Tn=n∗Sn−PnT_n = n * S_n - P_nTn​=n∗Sn​−Pn​

//#pragma GCC optimize(2)
#include <cstdio>
#include <algorithm>
#include <cstring>
#include <iostream>
#include <cmath>
using namespace std;
typedef long long ll;
const int N = 4;int n, m;
int f[N][N];void mul(int c[][N], int a[][N], int b[][N])
{static int tmp[N][N];memset(tmp, 0, sizeof tmp);for(int i = 0; i < N; ++ i){for(int j = 0; j < N; ++ j){for(int k = 0; k < N; ++ k){tmp[i][j] = (tmp[i][j] + (ll)a[i][k] * b[k][j]) % m;}}}memcpy(c, tmp, sizeof tmp);
}int main()
{scanf("%d%d", &n, &m);// {fn, fn+1, sn, pn}// pn = n * sn - tnint f1[N][N] = {1, 1, 1, 0};int a[N][N] = {{0, 1, 0, 0},{1, 1, 1, 0},{0, 0, 1, 1},{0, 0, 0, 1},};int k = n - 1;while(k){if(k & 1)mul(f1, f1, a);mul(a, a, a);k >>= 1;}cout << (((ll)n * f1[0][2] - f1[0][3] % m + m) % m) << endl;return 0;
}

AcWing 1305. GT考试

【数学专题】矩阵乘法相关推荐

  1. 【BZOJ2326】【HNOI2011】数学作业 [矩阵乘法][DP]

    数学作业 Time Limit: 10 Sec  Memory Limit: 128 MB [Submit][Status][Discuss] Description Input 输入文件只有一行为用 ...

  2. 数学知识——矩阵乘法

    矩阵乘法 文章目录 矩阵乘法 引入 例题 斐波那契前 n 项和 思路 代码 佳佳的斐波那契 思路 代码 引入 由于线性递推式可以表示成矩阵乘法的形式,也通常用矩阵快速幂来求线性递推数列的某一项. 利用 ...

  3. [BZOJ2326] [HNOI2011] 数学作业 (矩阵乘法)

    Description Input Output Sample Input Sample Output HINT Source Solution 递推式长这样:$f[n]=f[n-1]*10^k+n$ ...

  4. 【bzoj2326】[HNOI2011]数学作业 矩阵乘法

    题目描述 题解 矩阵乘法 考虑把相同位数的数放到一起处理: 设有$k$位的数为$[l,r]$,那么枚举从大到小的第$i$个数(即枚举$r-i+1$),考虑其对$Concatenate(l..r)$的贡 ...

  5. 算法提高课-数学知识-矩阵乘法-AcWing 1303. 斐波那契前 n 项和:矩阵乘法,快速幂,线性代数

    题目分析 来源:acwing 分析: 先利用矩阵运算的性质将通项公式变成幂次形式,然后用快速幂的方法求解第 n项. 斐波那契数列的递推公式:f1=f2=1,fn=fn−2+fn−1(n≥3)f_1 = ...

  6. DeepMind攻克50年数学难题!AlphaZero史上最快矩阵乘法算法登Nature封面

      新智元报道   编辑:David Joey [新智元导读]DeepMind碾压人类高手的AI围棋大师AlphaZero,下一个目标是数学算法!现已发现50年以来最快的矩阵乘法算法. 下围棋碾压人类 ...

  7. 0x34.数学 - 矩阵乘法

    目录 矩阵 luogu P3390 [模板]矩阵快速幂 AcWing 205. 斐波那契 P1939 [模板]矩阵加速(数列) AcWing 206. 石头游戏 声明: 本系列博客是<算法竞赛进 ...

  8. [矩阵乘法/快速幂专题]Arc of Dream,Recursive sequence,233 Matrix,Training little cats

    矩阵快速幂习题 复习矩阵乘法及快速幂模板 乘法模板 快速幂模板 T1:Arc of Dream 题目 题解 code T2:Recursive sequence 题目 题解 code T3:233 M ...

  9. 并行程序设计方法实验(包括openmp、向量化实现pi计算、SPECOMP2012测试、矩阵乘法优化)

    目录 一.实验环境 二.专题一之积分计算圆周率 2.1向量优化 2.2 OpenMP优化 三.专题二之测试SPECOMP2012 3.1初步了解SPECOMP 3.2系统基本配置 3.3实践 3.3. ...

  10. 机器学习数学方面的介绍[计算机数学专题(9)]

    在学习机器学习之前,应该具有坚实的计算机基础. 深入学习了数据结构与数据结构的算法.计算机组织和系统架构,也具有编写一个完整项目的能力. 我的 AI 专题,主要是以 高中数学 为基础的,所以您应该看看 ...

最新文章

  1. mysql导入指定数据库_从mysql全备 导入指定数据库的数据:三种考虑方法
  2. 查看服务器CPU的个数、CPU的核数、多核超线程数
  3. 凌琦:物联网——一场正在发生的变革
  4. Java中 SPI的使用
  5. 给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出(算法导论第三版第十章10.4-5)
  6. 微信小程序自带地图_微信小程序地图上选择位置
  7. CS 3:威胁情报解决方案峰会——数据是威胁情报的基础
  8. GPS经纬度差值对应地面距离多少米
  9. 很少人知道的无人机飞行原理
  10. 命令行查询ip所在地——Nali
  11. 2022RWCTF体验赛web的wp
  12. 互联网人员电脑上必备的免费办公软件
  13. 计算机主板扩展槽,主板上这多扩展插槽,都是干什么用的,看了不后悔
  14. 网络互连有何实际意义?进行网络互连时,有哪些共同的问题需要解决?
  15. 二阶偏微分方程组 龙格库塔法_1、经典四阶龙格库塔法解一阶微分方程组
  16. mysql客户端汉化_Mysql客户端中文乱码问题解决
  17. 逻辑回归LR模型简介
  18. python中的除法怎么表示_Python中的除法
  19. PWK 以及 OSCP 常见问题
  20. MIT开源协议,多端适用的租房小程序,带完整的管理员后台

热门文章

  1. 经验 | 机器学习要避开十大雷区
  2. 在 Google Colab 中使用 OpenCV 进行图像处理简介
  3. 计算机视觉方向简介 | 半全局匹配SGM
  4. TricycleGAN:基于形状先验的无监督图像合成和分割
  5. laravel中Crypt加密方法
  6. POJ 3342 树形DP+Hash
  7. OC高效率52之理解消息转发机制
  8. 使用 SQL Server 2012 Analysis Services Tabular Mode 表格建模 图文教程
  9. 8086汇编语言命令速查与详解
  10. pyspark-mongo-input-output