随笔分类 - 矩阵
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=4291 题意:A Short problemTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 739Accepted Submission(s): 277Problem Description According to a research, VIM users tend to have shorter fingers, compared with Emac..
阅读全文
摘要:http://acm.hdu.edu.cn/showproblem.php?pid=2604题意:有 l 个人 排成一队,这l 个人可以 f(女人),也可能是 m(男人),求 这些人中 不含有 fmf 和 fff 这样的子序列的 个数.结果 % mod输入 l, mod;题解:由于L 比较大 ,我们可以求出 递推式后 用矩阵 乘法 求结果。接下来我们要考虑递推到n时新生成的E-queues,显然只考虑n-1时E-queues的最后两位的情况即可我们用 an 表示 以 开头为 fm 的数量 ,bn 表示 开头为 ff的数量 ,cn 表示 开头为 mf 的数量 dn 表示 开头为 mm 的数量。则
阅读全文
摘要:http://poj.org/problem?id=3613 题意:求从一个点s 到 一点 e 经过 n 条边的最短路经是多少(可以有重边):看到很难多解题报告说的是n 个点 ,其实,n 条边 应该是 n - 1 个点 题解:我们知道线性代数中有:在只 含有 01邻接矩阵 A的K次 方C=A^K,C[i][j]表示i点到j点正好经过K条边的路径数。而floyd则是每次使用一个中间点k去更新i,j之间的距离,那么更新成功表示i,j之间恰有一个点k时的最短路,如果做N - 1次floyd那么不就是i,j之间借助N - 1 个点时的最短路了当 c[i][j] > a[i][k] + a[k][
阅读全文
摘要:http://poj.org/problem?id=3735【题意】:有n只猫咪,开始时每只猫咪有花生0颗,现有一组操作,由下面三个中的k个操作组成:1. g i 给i只猫咪一颗花生米2. e i 让第i只猫咪吃掉它拥有的所有花生米3. s i j 将猫咪i与猫咪j的拥有的花生米交换 现将上述一组操作做m次后,问每只猫咪有多少颗花生?【题解】:m达到10^9,显然不能直接算。因为k个操作给出之后就是固定的,所以想到用矩阵,矩阵快速幂可以把时间复杂度降到O(logm)。问题转化为如何构造转置矩阵?说下我的思路,观察以上三种操作,发现第二,三种操作比较容易处理,重点落在第一种操作上。有一个很好的.
阅读全文
摘要:矩阵快速:由于矩阵乘法具有结合律,因此对于矩阵A,有A^4 = A * A * A * A = (A*A) * (A*A) = A^2 * A^2。我们可以得到这样的结论:当n为偶数时,A^n = A^(n/2) * A^(n/2);当n为奇数时,A^n = A^(n/2) * A^(n/2) * A (其中n/2取整)。递归:structmartrix{intm[maxn][maxn];};martrixmtmul(martrixa,martrixb){martrixc;inti,j,k;for(i=0;i<n;i++){for(j=0;j<n;j++){c.m[i][j]=0;
阅读全文
摘要:http://poj.org/problem?id=3070 题意:已知 Fibonacci 数列 可以这样求 ,求 fn 的最后四位.题解: 矩阵的快速幂#include<cstdio>#include<cstring>#include<cmath>#include<iostream>#include<algorithm>#include<set>#include<map>#include<queue>#include<vector>#include<string>#def
阅读全文
摘要:转自:http://www.matrix67.com/blog/archives/276/ 好像目前还没有这方面题目的总结。这几天连续看到四个问这类题目的人,今天在这里简单写一下。这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。不 要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中,一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到 的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的和。比 如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是
阅读全文
摘要:http://poj.org/problem?id=3233 题意: 题意:已知一个n*n的矩阵A,和一个正整数k,求S=A+A2+A3+ … +Ak。 /*第一次写时,写挫啦,tle 一次,后来,稍微改动了一下,ac矩阵快速幂。首先我们知道 A^x 可以用矩阵快速幂求出来。其次可以对k进行二分,每次将规模减半,分k为奇偶两种情况,如当k = 6和k = 7时有:S(6) = (1 + A^3) * (A + A^2 + A^3) = (1 + A^3) * S(3)。s(7) = (1 + A^3) * (A + A^2 + A^3) + A^7 = (1 + A^3)*(s(3)) +..
阅读全文
浙公网安备 33010602011771号