
矩阵乘法
文章平均质量分 52
yzyyylx
这个作者很懒,什么都没留下…
展开
-
bzoj 2323: [ZJOI2011]细胞
题面题意 给出一个数字串表示一个细胞,将其分为若干段等大小球,每个球内有一段数字,每一段再分为该数字大小个小球,每个小球与两边的有丝连接(除了两头的),每一个小球至少退化一条丝,那么有几种不同的分法.做法 经过分析之后,可以发现分段与去掉丝两部相互独立,而且退化这一步的种类数恰好是斐波那契数,因为数字大小是10^100级别的,因此要用矩阵快速幂来写,然后问题就在与分段. 可以用dp来原创 2018-02-26 19:15:21 · 291 阅读 · 0 评论 -
poj 2778 DNA Sequence
题面题意给出至多10个由A,G,T,C组成的字符串,问长度为n(n<=2e9),由A,G,T,C组成的且不包含之前给的几个字符串的字符串有几个.做法因为是多个字符串的匹配问题,首先建出AC自动机,若n比较小则可以在自动机上dp,但因为n很大,而且给出的字符串又短又少,故可以用矩阵快速幂. 首先找出自动机上的所有合法节点(不包含给出字符串的节点),然后统计出它们后面加一个字符能够到达的节点及个数,保原创 2018-04-01 17:54:46 · 279 阅读 · 0 评论 -
CodeForces - 718C Sasha and Array
题面题意给出一串数,要求支持以下两个操作: 1.区间加 2.区间查询f(a[i])的和,f(i)表示斐波那契的第i项的值。做法对于求f(i)的值,肯定是利用矩阵快速幂,因此f(i)可以表示为(1 1 \n 1 0)^i,这样区间加p就可以转化为区间乘单位矩阵的p次方,而且矩阵乘法满足分配率,这样就可以用线段树来维护。 维护方法: 每个线段树的结点存两个矩阵(区间f(...原创 2018-07-07 16:36:02 · 325 阅读 · 0 评论 -
CodeForces 193E Fibonacci Number
题面题意给出一个数n,问是否存在一个斐波那契数mod1e13后等于n,若不存在输出-1,否则输出它是第几个。做法首先找一下规律,发现斐波那契数在模10,100,1000,1000……下的循环节大小分别为60,300,1500,15000,150000…….并且发现后来的循环节大小每次*10。 因此我们可以考虑先暴力求出模1e5(这个范围定为1e3,1e4也行)下与给出数同...原创 2018-08-07 09:25:28 · 459 阅读 · 0 评论 -
2973 石头游戏
题面题意给出一个方格阵,初始每个格子中都没有石头,然后每个格子都有一个操作序列,并且每时刻执行一个,循环执行,序列长度小于等于6,问T时刻后石头个数最多的格子中有几个石头。做法代码#include&lt;iostream&gt;#include&lt;cstdio&gt;#include&lt;cstring&gt;#define ll long long#define N 70...原创 2018-11-06 20:34:44 · 502 阅读 · 0 评论 -
codeforces506E Mr. Kitayuta's Gift
题面题意给你一个长度为n的字符串,现要你加上m个字符,使其变为一个回文串,问有几种加法。做法首先题目可以转化为,求有几个长度为n+m的字符串,使给出的字符串为该字符串的子序列。这样可以考虑从两边开始确定字符,并与给出的字符串进行匹配,然后我们就可以根据此时的字符串已经匹配的位置建立自动机,这个自动机由多个节点构成,每个点都有一个权值为24,25或26(仅终点是26)的自环,然后非自环会形...原创 2019-03-03 13:44:01 · 402 阅读 · 0 评论