矩阵快速幂——将运算推广到矩阵上HDU 1575
/*
本题的思路比较简单,就是将递推公式写出来,然后表达成为一个矩阵的形式
最后通过计算就可以得到一个符合题目要求的矩阵,
然后就是将矩阵上面所有的对角线元素相加
得到的结果即为所求的目标
*/
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn = 15;
#define mod 9973
int res[maxn][maxn];
int n;
void mul(int a[][15],int b[][15],int c[][15]){
int temp[15][15]; memset(temp,0,sizeof(temp));
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
for(int k=0;k<n;k++){
temp[i][j]=(temp[i][j]+ a[i][k]*b[k][j] )%mod;
}
memcpy(c,temp,sizeof(temp));
}
void pow(int a[][15],int k){
while(k){
if(k&1){
mul(res,a,res);
}
mul(a,a,a);
k>>=1;
// printf("%d\n",k);
}
}
int main(){
int T,k;
int a[maxn][maxn];
scanf("%d",&T);
while(T--){
scanf("%d%d",&n,&k);
for(int i=0;i<n;i++) for(int j=0;j<n;j++) res[i][j]=(i==j);
//这个做法主要是将对角线标记出来,然后就可以与矩阵a相乘,最后得到的a矩阵就是一个对角矩阵
for(int i=0;i<n;i++) for(int j=0;j<n;j++) scanf("%d",&a[i][j]);
pow(a,k);
int ans=0;
for(int i=0;i<n;i++) ans+=res[i][i];
printf("%d\n",ans%mod);
}
return 0;
}
//自己现在最大的问题就是知道矩阵相乘的方法,但是将一个数组的问题处理好就没办法了……
////////////////////////////////////////////////////////////////////////////////////////////////////////////
矩阵方面的问题处理参考方式
矩阵乘法
struct Matrix{
long long mat[N][N];
Matrix operator*(const Matrix m)const{
Matrix tmp;
for(int i = 0;i < n;i++){
for(int j = 0;j < n;j++){
tmp.mat[i][j] = 0;//完成初始化
for(int k = 0;k < n;k++){
tmp.mat[i][j] += mat[i][k]*m.mat[k][j]%MOD;
tmp.mat[i][j] %= MOD;
}}}
return tmp;
//这个是通过new一个空间后达到目的的,所以后面会有空间的保留,可以通过这种方式将数组传递下来
}
};
矩阵快速幂——将运算推广到矩阵上HDU 1575的更多相关文章
- Luogu P3390 【模板】矩阵快速幂&&P1939 【模板】矩阵加速(数列)
补一补之前的坑 因为上次关于矩阵的那篇blog写的内容太多太宽泛了,所以这次把一些板子和基本思路理一理 先看这道模板题:P3390 [模板]矩阵快速幂 首先我们知道矩阵乘法满足结合律而不满足交换律的一 ...
- hdu3306 Another kind of Fibonacci【矩阵快速幂】
转载请注明出处:http://www.cnblogs.com/KirisameMarisa/p/4187670.html 题目链接:http://acm.hdu.edu.cn/showproblem. ...
- [技术]浅谈OI中矩阵快速幂的用法
前言 矩阵是高等代数学中的常见工具,也常见于统计分析等应用数学学科中,矩阵的运算是数值分析领域的重要问题. 基本介绍 (该部分为入门向,非入门选手可以跳过) 由 m行n列元素排列成的矩形阵列.矩阵里的 ...
- BZOJ 2004 公交线路(状压DP+矩阵快速幂)
注意到每个路线相邻车站的距离不超过K,也就是说我们可以对连续K个车站的状态进行状压. 然后状压DP一下,用矩阵快速幂加速运算即可. #include <stdio.h> #include ...
- 解题报告:poj 3070 - 矩阵快速幂简单应用
2017-09-13 19:22:01 writer:pprp 题意很简单,就是通过矩阵快速幂进行运算,得到斐波那契数列靠后的位数 . 这是原理,实现部分就是矩阵的快速幂,也就是二分来做 矩阵快速幂可 ...
- HDU 2276 Kiki & Little Kiki 2( 矩阵快速幂 + 循环同构矩阵 )
蒟蒻的我还需深入学习 链接:传送门 题意:给出一个长度为 n,n 不超过100的 01 串 s ,每当一个数字左侧为 1 时( 0的左侧是 n-1 ),这个数字就会发生改变,整个串改变一次需要 1s ...
- POJ 3070 Fibonacci 矩阵快速幂模板
Fibonacci Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 18607 Accepted: 12920 Descr ...
- hdu 5451 Best Solver 矩阵循环群+矩阵快速幂
http://acm.hdu.edu.cn/showproblem.php?pid=5451 题意:给定x 求解 思路: 由斐波那契数列的两种表示方法, 之后可以转化为 线性表示 F[n] = ...
- hdu 1005 Number Sequence(矩阵快速幂,找规律,模版更通用)
题目 第一次做是看了大牛的找规律结果,如下: //显然我看了答案,循环节点是48,但是为什么是48,据说是高手打表出来的 #include<stdio.h> int main() { ], ...
随机推荐
- 基于jQuery弹性展开收缩菜单插件gooey.js
首先 引入css <link rel="stylesheet" href="css/bootstrap.min.css"> <link rel ...
- oracle 学习之DG的搭建
1.配置过程 确认为归档模式 SQL> select log_mode from v$database; LOG_MODE ------------ ARCHIVELOG 配置归档日志存放路径( ...
- python密码强口令检测
主要就是输入判断检测,以及一些正则的学习.刚开始玩python项目,代码写的不好.我以前玩C的!! 代码的价值与其是否能够实现功能等价! #密码输入检测 密码长度不少于8个字符,而且必须包含大写/小写 ...
- python学习day2
一.模块初识 python模块 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用 ...
- SVM与LR的比较
两种方法都是常见的分类算法,从目标函数来看,区别在于逻辑回归采用的是logistical loss,svm采用的是hinge loss.这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与 ...
- JavaScript中的window对象
JavaScript中的window对象:http://www.cnblogs.com/kissdodog/archive/2013/01/01/2841464.html
- 浙大pat1019题解
1019. General Palindromic Number (20) 时间限制 400 ms 内存限制 32000 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN ...
- Linux中kettle连接hadoop并传数据(5)
http://wiki.pentaho.com/display/BAD/Loading+Data+into+HDFS 新建job
- Gentoo解决Udev升级的网卡重命名问题
问题描述: 配置网络时,很多新手运行ifconfig命令查看网卡时,会发现我们熟悉的eth0网卡没有了,或是发现一些不规则命名的东东,不错,那就是你的网卡. 因为内核升级(忘记具体哪个版本了)从ude ...
- error LNK2001:unresolved external symbol "xxx:static xxx"
一般是在类的头文件里定义了某个static变量而没有在类的 Implemention 里去初始化(也许不是这么称呼)这个变量. 比如在 xxdlg.h 中写了如下代码 1: class CxxDlg ...