随笔分类 -  矩阵相乘

摘要:转载:http://www.cppblog.com/y346491470/articles/157284.html【题意】:有n只猫咪,开始时每只猫咪有花生0颗,现有一组操作,由下面三个中的k个操作组成:1. g i 给i只猫咪一颗花生米2. e i 让第i只猫咪吃掉它拥有的所有花生米3. s i j 将猫咪i与猫咪j的拥有的花生米交换现将上述一组操作做m次后,问每只猫咪有多少颗花生?【题解】:m达到10^9,显然不能直接算。因为k个操作给出之后就是固定的,所以想到用矩阵,矩阵快速幂可以把时间复杂度降到O(logm)。问题转化为如何构造转置矩阵?说下我的思路,观察以上三种操作,发现第二,三种操 阅读全文
posted @ 2012-07-26 09:26 wutaoKeen 阅读(178) 评论(0) 推荐(0)
摘要:这是一道经典的矩阵题:这个题就是要构造一个矩阵;A 1 * A 1 ---> A*A A + 1 ..... A^k S(k-1) + 1;0 1 0 1 0 1 0 1;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<cstring>#include<vector># 阅读全文
posted @ 2012-07-25 15:55 wutaoKeen 阅读(187) 评论(0) 推荐(0)
摘要:这个题用矩阵相乘法:f[n-2] 0 1 ----> f[n-1]f[n-1] 1 1 f[n];我们只要对矩阵进行相乘就可以了;View Code #include<iostream>#include<cstdio>#include<cstdlib>#include<algorithm>#include<cmath>#include<queue>#include<set>#include<cstring>#include<vector>#include<string> 阅读全文
posted @ 2012-07-24 22:31 wutaoKeen 阅读(127) 评论(0) 推荐(0)
摘要:该题搞了一个晚上才A了它,刚开始一直不能出正确结果,总认为是我的二分哪里错了,修改了几个小时,还重敲了,后来才发现是矩阵建反了,该题最重要的是建立矩阵,如果矩阵建立好了,就万事顺利了,怎样建立这个矩阵了,我们来讨论一下(n>10),f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10);我们来看个图:、矩阵A 矩阵B0 1 0 0 0 0 0 0 0 0 f0 f10 0 1 0 0 0 0 0 0 0 f1 f20 0 0 1 0 0 0 0 0 0 f2 f30 0 0 0 1 0 0 0 0 0 * f3 阅读全文
posted @ 2011-08-09 10:00 wutaoKeen 阅读(550) 评论(0) 推荐(0)