首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
Plant 矩阵快速幂,,,,有点忘了
】的更多相关文章
CodeForces 185A. Plant (矩阵快速幂)
CodeForces 185A. Plant (矩阵快速幂) 题意分析 求解N年后,向上的三角形和向下的三角形的个数分别是多少.如图所示: N=0时只有一个向上的三角形,N=1时有3个向上的三角形,1个向下的三角形,N=2,有10个向上的三角形和6个向下的三角形. 根据递推关系,设an为第N年向上的三角形个数,bn为第N年向下的三角形个数.初始条件为 a0 = 1, b0 = 0; 递推关系式: an = 3an-1 + bn-1 bn = 3bn-1 + an-1 可以构造出一下矩阵 然后用矩…
Plant 矩阵快速幂,,,,有点忘了
题目链接:https://codeforces.com/contest/185/problem/A 题目大意就是求n次以后 方向朝上的三角形的个数 以前写过这个题,但是忘了怎么做的了,,,又退了一遍,发现第n次后 总个数为2^n+(2^n+!)/2个,,但是部分数据过不去,可能是卡long long 把,然后看了其他人写的. 规律 每一次分解 朝上的三角形可以分解为 新的3个朝上的三角形和一个朝下的三角形,朝下的三角形可以分解为3个朝下的新三角形和一个朝上的三角形 所以 b(n)=3*b…
Codeforces 185A Plant( 递推关系 + 矩阵快速幂 )
链接:传送门 题意:输出第 n 年向上小三角形的个数 % 10^9 + 7 思路: 设 Fn 为第 n 年向上小三角形的个数,经过分析可以得到 Fn = 3 * Fn-1 + ( 4^(n-1) - Fn-1 ),根据这个递推式可以用矩阵快速幂来解决. 下面三个矩阵设为矩阵 a ,b ,ans 矩阵 a: 2 1 0 4 矩阵 b: Fn-1 0 4^(n-1) 0 矩阵 ans: Fn 0 4^n 0 这样就可以表示出 上方递推关系了 ,所以 ans = Matrixpow( a, n-1 )…
P3390 【模板】矩阵快速幂
题目背景 矩阵快速幂 题目描述 给定n*n的矩阵A,求A^k 输入输出格式 输入格式: 第一行,n,k 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵第i行第j列的元素 输出格式: 输出A^k 共n行,每行n个数,第i行第j个数表示矩阵第i行第j列的元素,每个元素模10^9+7 输入输出样例 输入样例#1: 2 1 1 1 1 1 输出样例#1: 1 1 1 1 说明 n<=100, k<=10^12, |矩阵元素|<=1000 算法:矩阵快速幂 如题,矩阵快速幂. 已知,矩阵乘…
[bzoj 1409] Password 矩阵快速幂+欧拉函数
考试的时候想到了矩阵快速幂+快速幂,但是忘(bu)了(hui)欧拉定理. 然后gg了35分. 题目显而易见,让求一个数的幂,幂是斐波那契数列里的一项,考虑到斐波那契也很大,所以我们就需要欧拉定理了 p是素数,所以可以搞 然后我们用矩阵快速幂求出幂,然后快速幂即可解决问题 #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; #de…
hdu 1757 (矩阵快速幂) 一个简单的问题 一个简单的开始
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1757 题意不难理解,当x小于10的时候,数列f(x)=x,当x大于等于10的时候f(x) = a0 * f(x-1) + a1 * f(x-2) + a2 * f(x-3) + …… + a9 * f(x-10); 所求的是f(x)取m的模,而x,m,a[0]至a[9]都是输入项 初拿到这道题,最开始想的一般是暴力枚举,通过for循环求出f(x)然后再取模,但是有两个问题,首先f(x)可能特别大,其…
2018.09.25 poj3070 Fibonacci(矩阵快速幂)
传送门 矩阵快速幂板题,写一道来练练手. 这一次在poj做题总算没忘了改万能库. 代码: #include<iostream> #include<cstdio> #define mod 10000 #define A a[0][0] #define B a[0][1] #define C a[1][0] #define D a[1][1] using namespace std; int n; struct Matrix{int a[2][2];Matrix(){A=0,B=C=D…
poj3233 Matrix Power Series(矩阵快速幂)
题目要求的是 A+A2+...+Ak,而不是单个矩阵的幂. 那么可以构造一个分块的辅助矩阵 S,其中 A 为原矩阵,E 为单位矩阵,O 为0矩阵 将 S 取幂,会发现一个特性: Sk +1右上角那一块不正是我们要求的 A+A2+...+Ak 于是构造出 S 矩阵,然后对它求矩阵快速幂即可,最后别忘了减去一个单位阵. 时间降为O(n3log2k) PS.减去单位矩阵的过程中要防止该位置小于零. #include<iostream> #include<cstdio> #inclu…
POJ3070 矩阵快速幂模板
题目:http://poj.org/problem?id=3070 矩阵快速幂模板.mod写到乘法的定义部分就行了. 别忘了 I ( ) 和 i n i t ( ) 要传引用! #include<iostream> #include<cstdio> #include<cstring> using namespace std; ; struct Matrix{ ][]; Matrix operator *(const Matrix &b)const { Matri…
( VIJOS )VOJ 1049 送给圣诞夜的礼品 矩阵快速幂
https://vijos.org/p/1049 非常普通的矩阵快速幂... 但是我 第一次写忘了矩阵不能交换律... 第一二次提交RE直到看到题解才发现这道题不能用递归快速幂... 第三次提交成了c编译错误... 第四次提交WA发现写循环快速幂的时候少清零了一个f... 所以提交了五次才终于对了,什么垃圾的代码能力...通过率杀手... 希望下次能捡起我的脑子.... 代码很简单 如下 #include<cstdio> #include<cstring> #include&l…