----矩阵快速幂
欣君
追寻那如樱花般的绚烂
展开
-
51nod 1358 浮波那契
将 fb(x) 的变量扩大10倍显示后,可以得到 fb(x)=fb(x-10)+fb(x-34) 然后就是标准的矩阵快速幂了。 #include using namespace std; const int siz=40; long long mod=1e9+7; struct mtx { long long a[siz][siz]; }unit; mtx multi(mtx m1原创 2016-11-05 01:54:15 · 266 阅读 · 0 评论 -
51nod 1537 分解
矩阵快速幂XJB乱搞一下,没严格证明准确性。 #include using namespace std; const int siz=2; long long mod=1e9+7; struct mtx { long long a[siz][siz]; }unit; mtx multi(mtx m1,mtx m2) { int i,j,k; mtx ret; memset(ret.原创 2016-12-07 20:21:12 · 215 阅读 · 0 评论 -
51nod 1668 非010串
dp[i]=2*dp[i-1]-dp[i-2]+dp[i-3] 由于有减号,所以矩阵快速幂时,可能会产生负数,要处理掉。 #include using namespace std; const int siz=3; long long mod=1e9+7; struct mtx { long long a[siz][siz]; }unit; mtx multi(mtx m1,mtx m原创 2017-02-10 10:35:22 · 259 阅读 · 0 评论 -
牛客OI周赛8-提高组 C 随机采矿
出题人绝对星际玩多了。 设表示时刻拥有个SCV的概率,可以得到: 那么时刻生产的晶体矿数量期望为: 当数据量较小时,可以直接写两重循环处理。当数据较大时,需要用矩阵加速。 其中, 会发现会不断变化,而实际上,在时,最多只有种可能性,因此可以分段处理,将相同的情况视为同一段。 若当前段的起始点为,则这一段的终点为,易证明当时,为定值。初始。 #inc...原创 2019-04-18 06:34:44 · 180 阅读 · 0 评论