矩阵乘法(摆花)
2015-09-28 19:53
197 查看
摆花
【问题描述】
艺术馆门前将摆出许多花,一共有 n 个位置排成一排,每个位置可以摆花也
可以不摆花。有些花如果摆在相邻的位置(隔着一个空的位置不算相邻),就不
好看了。假定每种花数量无限,求摆花的方案数。
【输入】输入文件名为(flowers.in)。
输入有 1+m 行,第一行有两个用空格隔开的正整数 n、 m, m 表示花的种类数。接
下来的 m 行,每行有 m 个字符 1 或 0, 若第 i 行第 j 列为 1,则表示第 i 种花和第
j 种花不能排在相邻的位置,输入保证对称。(提示:同一种花可能不能排在相
邻位置)。
【输出】输出文件名为(flowers.out)。
输出只有一个整数,为方案数(这个数字可能很大,请输出方案数除以
1000000007 的余数)。
flowers.in flowers.out
2 2
01
10
7
样例解释
七种方案为(空,空) 、(空, 1)、( 1、空)、( 2、空)、(空、 2)、( 1,1)、( 2,2)
数据范围与约定
对于 20%的数据, 1<n≤5,0<m≤10。
对于 60%的数据, 1<n≤200,0<m≤100。
对于 100%的数据, 1<n≤1000000000, 0<m≤100。
很容易知道dp公式为f[i][j]+=f[i-1][k](map[k][j]==0)
由于n很大,这时就用到矩阵乘法。
f[i][0] f[i-1][0] 1 1 1
f[i][1] = f[i-1][1]*1 1 0
f[i][2] f[i-1][2] 1 0 1
可以发现,乘上的这个矩阵就是输入的矩阵,任何不摆花可以和所有花相邻。
【问题描述】
艺术馆门前将摆出许多花,一共有 n 个位置排成一排,每个位置可以摆花也
可以不摆花。有些花如果摆在相邻的位置(隔着一个空的位置不算相邻),就不
好看了。假定每种花数量无限,求摆花的方案数。
【输入】输入文件名为(flowers.in)。
输入有 1+m 行,第一行有两个用空格隔开的正整数 n、 m, m 表示花的种类数。接
下来的 m 行,每行有 m 个字符 1 或 0, 若第 i 行第 j 列为 1,则表示第 i 种花和第
j 种花不能排在相邻的位置,输入保证对称。(提示:同一种花可能不能排在相
邻位置)。
【输出】输出文件名为(flowers.out)。
输出只有一个整数,为方案数(这个数字可能很大,请输出方案数除以
1000000007 的余数)。
flowers.in flowers.out
2 2
01
10
7
样例解释
七种方案为(空,空) 、(空, 1)、( 1、空)、( 2、空)、(空、 2)、( 1,1)、( 2,2)
数据范围与约定
对于 20%的数据, 1<n≤5,0<m≤10。
对于 60%的数据, 1<n≤200,0<m≤100。
对于 100%的数据, 1<n≤1000000000, 0<m≤100。
很容易知道dp公式为f[i][j]+=f[i-1][k](map[k][j]==0)
由于n很大,这时就用到矩阵乘法。
f[i][0] f[i-1][0] 1 1 1
f[i][1] = f[i-1][1]*1 1 0
f[i][2] f[i-1][2] 1 0 1
可以发现,乘上的这个矩阵就是输入的矩阵,任何不摆花可以和所有花相邻。
相关文章推荐
- C中实现矩阵乘法的一种高效的方法
- java 二维数组矩阵乘法的实现方法
- strassen矩阵乘法
- [DP]CH Round#30 T2摆花
- 矩阵快速幂求斐波那契通项(矩阵乘法优化线性递推式)
- Strassen Algorithm解析
- 矩阵乘法求斐波那契数列
- 任意大小矩阵乘积
- Mapreduce----<<数学之美>>
- hdu 5411 CRB and Puzzle 矩阵快速幂
- 我们可以推测矩阵乘法最优解的时间复杂度么?
- Codeforces Round #307 (Div. 2) D. GukiZ and Binary Operations(数学)
- zoj3772--【水题】线段树区间查询+矩阵乘法
- 矩阵乘法的计算和来源
- MapReduce实现矩阵乘法
- Codeforces Round #230 (Div. 1)B,C
- 看数据结构写代码(20)稀疏矩阵(顺序存储方式)
- poj 1163 The Triangle
- 矩阵乘法
- 矩阵乘法