[Luogu4723]线性递推(常系数齐次线性递推) 题面 洛谷 题解 板子题QwQ,注意多项式除法那里每个多项式的系数,调了一天. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; #define MAX 200000 #define MOD 998244353 inline int read() { int x=0;…
这里所有的内容都将有关于一个线性递推: $f_{n} = \sum\limits_{i = 1}^{k} a_{i} * f_{n - i}$,其中$f_{0}, f_{1}, ... , f_{k - 1}$是已知的. BM是用于求解线性递推式的工具,传入一个序列,会返回一个合法的线性递推式,一个$vector$,其中第$i$项表示上式的$a_{i + 1}$. CH用于快速求解常系数齐次线性递推的第$n$项,我们先会求出一个特征多项式$g$,$g$的第$k$项是$1$,其余项中第$k - i…
常系数齐次线性递推 具体记在笔记本上了,以后可能补照片,这里稍微写一下,主要贴代码. 概述 形式: \[ h_n = a_1 h_{n-1}+a_2h_{n-2}+...+a_kh_{n-k} \] 矩阵乘法是\(O(k^3 \log n)\) 利用特征多项式可以做到\(O(k^2\log n)\) 特征多项式 特征值和特征向量 特征多项式 \[ f(\lambda) = \mid M - \lambda I\mid \] 是关于\(\lambda\)的\(n\)次多项式 根据\(Cayley-…
[背诵瞎讲] Cayley-Hamilton 常系数齐次线性递推式第n项的快速计算 (m=1e5,n=1e18) 看CSP看到一题"线性递推式",不会做,去问了问zsy怎么做,他并不想理我并丢给我以下方法: \[ \text{Cayley-Hamilton} \] 下文会根据CH定理证明的思路证明,没有形式上使用特征系统,因为我也不会... 一句话就是求: \[ f_n=\sum_{i=1}^m c_if_{n-i} \mod 998244353 \] 但这个算法卡常,zsy说1e5估…
[BZOJ4161]Shlw loves matrixI (常系数齐次线性递推) 题面 BZOJ 题解 \(k\)很小,可以直接暴力多项式乘法和取模. 然后就是常系数齐次线性递推那套理论了,戳这里 #include<iostream> #include<cstdio> #include<cstring> using namespace std; #define MOD 1000000007 #define MAX 5000 void add(int &x,int…
问了数竞的毛毛搞了一番也没太明白,好在代码蛮好写先记下吧. #include<bits/stdc++.h> using namespace std; ,mod=1e9+; int n,k,c[N],b[N],a[N],f[N],tmp[N],ans; inline void qmul(int *x,int *y) { ;i<k*;++i)tmp[i]=; ;i<k;++i) ;j<k;++j) tmp[i+j]=(tmp[i+j]+1ll*x[i]*y[j]%mod)%mod…
[BZOJ4944][NOI2017]泳池(线性常系数齐次递推,动态规划) 首先恰好为\(k\)很不好算,变为至少或者至多计算然后考虑容斥. 如果是至少的话,我们依然很难处理最大面积这个东西.所以考虑答案至多为\(k\)的概率,再减去至多为\(k-1\)的概率就是最终的答案. 发现要求的东西必须贴着底边,所以对于每一列而言我们需要考虑的就是选定区间的最低的那个不安全的格子的行号,再乘上底边的长度. 所以考虑设\(f[n]\)表示底边长度为\(n\)的答案,即确定底边长度为\(n\)时,面积小于等…
前言 嗯   我之前的不知道多少天看这个的时候到底在干什么呢 为什么那么..  可能大佬们太强的缘故 最后仔细想想思路那么的emmm 不说了  要落泪了 唔唔唔 前置 多项式求逆 多项式除法/取模 常系数齐次递推目的 求一个满足k阶齐次线性递推数列ai的第n项 即:  给出f1--fk,a0--ak-1求an N=1e9,K=32000 常系数齐次递推主要思路 emmm矩阵快速幂怎么样都应该会的 设转移矩阵为A,st=[a0,a1...ak-2,ak-1]为初始矩阵 显然an=(st*An)0…
题目链接:https://ac.nowcoder.com/acm/contest/885/B 题意:已知齐次线性式xn=a*xn-1+b*xn-2,已知a,b,x0,x1,求xn,n很大,n<=1010^6. 思路:矩阵快速幂模板题,构造矩阵t: a b 矩阵ans: x1 x0 显然ans1=t×ans,ans1为: x2 x1 那么ansn=t^n*ans,ansn为: xn+ xn 所以用矩阵快速幂计算t^n,n很大,快速幂要用十进制倍增,对每一位的计算不能直接乘,还要用二进制的快速幂,不…
定义 若数列 \(\{a_i\}\) 满足 \(a_n=\sum_{i=1}^kf_i \times a_{n-i}\) ,则该数列为 k 阶齐次线性递推数列 可以利用多项式的知识做到 \(O(k\log k \log n)\) 求第 n 项. 如果给出前 k 项,想知道 \(f_i\) ,可以在 \(O(k^2)\) 的时间内求出. 求 \(f_i\) 有 Berlekamp Massey 算法和 Reeds Sloane 算法,具体算法思想是啥咱也不知道,咱只知道这东西放进去就能跑. 前者需…