摘要:
好像目前还没有这方面题目的总结。这几天连续看到四个问这类题目的人,今天在这里简单写一下。这里我们不介绍其它有关矩阵的知识,只介绍矩阵乘法和相关性质。不要以为数学中的矩阵也是黑色屏幕上不断变化的绿色字符。在数学中,一个矩阵说穿了就是一个二维数组。一个n行m列的矩阵可以乘以一个m行p列的矩阵,得到的结果是一个n行p列的矩阵,其中的第i行第j列位置上的数等于前一个矩阵第i行上的m个数与后一个矩阵第j列上的m个数对应相乘后所有m个乘积的和。比如,下面的算式表示一个2行2列的矩阵乘以2行3列的矩阵,其结果是一个2行3列的矩阵。其中,结果的那个4等于2*2+0*1:下面的算式则是一个1 x 3的矩阵乘以3 阅读全文
摘要:
链接构造矩阵 快速幂求解构造矩阵a[i]为每个cati所拥有的花生总数 这里多加一维用来求和,具体是怎么求得可以看下面的一组例子 假设有3个cat a[] = {1,0,0,0}构造单位矩阵来保存操作后的解 为什么要是单位矩阵?因为单位矩阵乘以任何矩阵还是原矩阵 这样在单位矩阵上改变要操作的那列(这里用列来表示i只猫的花生数)就能保留下来不被改变的猫的花生数对于g 1(1,0,0,0)*{1,1,0,0 0,1,0,0 0,0,1,0 0,0,0,1}这样得出结果(1,1,0,0} 也就是说对于g1 就让mat[0][i]+1就可以了 因为加了k 最后都会变成a[... 阅读全文
摘要:
链接也是矩阵经典题目 二分递归求解a+a^2+a^3+..+a^(k/2)+a^(k/2+1)+...+a^k = a+a^2+..+a^k/2+a^k/2(a^1+a^2+..+a^k/2)(偶数)a+a^2+a^3+..+a^(k/2)+a^(k/2+1)+...+a^k = a+a^2+..+a^k/2+a^k/2(a^1+a^2+..+a^k/2)+a^k。奇数 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 using names. 阅读全文
摘要:
链接矩阵经典题目利用矩阵的快速幂取模 快速的求得解其实它题目已经给的很明显了 下面再描述一下过程f(n) 1 1 f(n)+f(n-1)f(n-1) 1 0 f(n)左边乘中间的变成右边的 然后可以看出右边的已经变成了 f(n+1) f(n) 那么乘上k次上面那个10矩阵 就得到了f(n+k) 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 using namespace std;11 #define N 212 #define LL... 阅读全文
摘要:
利用快速幂的思想 根据矩阵的结合律 可以递归二分求解 struct Mat{ int mat[N][N];};int n;Mat operator * (Mat a,Mat b){ Mat c; memset(c.mat,0,sizeof(c.mat)); int i,j,k; for(k =0 ; k >= 1) { if(k&1) c = c*a; a = a*a; } return c;} 阅读全文
摘要:
链接A,B为最快和次快有两种方式可以使c,d过桥一是a与c一起走,a回来接d再与d一起走,一直到对岸人为0为止而是 a与b一起走 a回来送灯 c与d一起走 b回来送灯 重复此过程。只剩2人时 直接过桥3 人时 A回来送灯 ac走 a回来送灯 ab走 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 using namespace std;11 #define N 101012 #define LL long long13 #define IN. 阅读全文
摘要:
链接利用log函数来求解 n! 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 #include 9 #include10 #include11 using namespace std;12 #define N 10000013 #define LL long long14 #define INF 0xfffffff15 const double eps = 1e-8;16 const double pi = acos(-1.0);17 const double inf = ~0u>>2;18 阅读全文