题目大意给出一张无向图,这个图中有一些鱼,他们不同的时间会出现在固定的位置,呈周期性循环,一个人要在这个图上走,他不能和鱼同时在一个点上。问从s到t走k步有多少种方案。思路注意到鱼的循环只可能是2/3/4,也就是说最多经过12个时间点之后,状态又会和一开始相同。所以预处理12个矩阵用来转移。分为k/12和k%12来处理。
当鱼在一个位置上的时候,当前时间从这个位置出发的一行和上一个时间到达这个点的...
分类:
其他好文 时间:
2015-03-04 14:41:11
阅读次数:
176
题解:
我们发现fi+1=fi×10p+i+1f_{i+1}=f_i\times10^p+i+1
这样我们就对于每个p的阶段都可以构造矩阵加速运算。
?????fi 0 0 i+100100?????×?????10p 1 0 011001?????= ??????fi+1 0 0 i+200100??????
\begin{bmatrix}
f_i & i+1 & 1 \\0 &...
分类:
其他好文 时间:
2015-03-03 22:14:24
阅读次数:
242
题目大意:给定一张有向图,多次询问从S到T经过不超过K条边的所有路径的长度的平方和
首先这题一点也不麻烦
现有一带权整数集合S
我们令一个矩阵F_S表示从第i个点到第j个点,经过k条边(k∈S)的所有路径长度的平方和
令矩阵G_S表示从第i个点到第j个点,经过k条边(k∈S)的所有路径长度之和
令矩阵H_S表示从第i个点到第j个点,经过k条边(k∈S)的路径条数...
分类:
其他好文 时间:
2015-03-03 13:41:46
阅读次数:
321
题目大意求一个这样的数:“12345678910111213……”对m取模的值。思路观察这个数字的特点,每次向后面添加一个数。也就是原来的数乘10^k之后在加上一个数。而且处理每个数量级的时候是相似的。所以就可以用矩阵乘法来加速。我构造的矩阵是这样的。
[当前数字累加数字1]×???数量级10011001???=[新的数字累加数字+11]
\begin{bmatrix} 当前数字 & 累加数字...
分类:
其他好文 时间:
2015-03-03 09:56:12
阅读次数:
286
主要利用状态之间的转换吧,可以把各个状态之间的转换成矩阵,利用矩阵乘法来找出有多少条路径。题解转自:http://blog.csdn.net/morgan_xww/article/details/7834801?题意:有m种DNA序列是有疾病的,问有多少种长度为n的DNA序列不包含任何一种有疾病的D...
分类:
其他好文 时间:
2015-03-02 16:33:32
阅读次数:
150
题意:求A经过K个点到B方案数
方法一:
1个0 1 的矩阵 A
a[i][j] = 1 表示i 到 j可达 或者说 i 到 j 有1条路 或者说i到j经过一个点的方案数 路可以重复走
而A2 = A* A
a[i][j] 的含义是
从i到j经过2个点的方案数
A的k次方 A[i,j]代表 i到j走k步的方案有a[i][j]
矩阵乘法的定义居然和这个模型如此契合,佩服,所...
分类:
其他好文 时间:
2015-02-27 17:13:16
阅读次数:
169
按往常一样,记下一些好的资料:
http://www.matrix67.com/blog/archives/276 这是矩阵乘法10个经典的题目,其中最后一题的最后一段在该文的评论中给出。
矩阵乘法满足结合律保证了矩阵快速幂的正确性。
目前的代码风格是学了九野的模版风格(http://blog.csdn.net/acmmmm/article/details/10041141)
#d...
分类:
其他好文 时间:
2015-02-27 13:37:51
阅读次数:
178
import java.util.*;
import java.io.*;
public class 矩阵乘法 {
public static void main(String[] args) {
Scanner in = new Scanner(new BufferedInputStream(System.in));
int m = in.nextInt();
int s =...
分类:
其他好文 时间:
2015-02-26 16:40:45
阅读次数:
122