随笔分类 -  优化—矩阵乘法

1
该文被密码保护。
posted @ 2019-04-21 20:34 lokiii 阅读(3) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-03-07 18:51 lokiii 阅读(9) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-02-14 18:02 lokiii 阅读(4) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2019-01-12 22:08 lokiii 阅读(9) 评论(0) 推荐(0)
摘要:注意到周期234的lcm只有12,也就是以12为周期,可以走的状态是一样的 所以先预处理出这12个状态的转移矩阵,乘起来,然后矩阵快速幂优化转移k/12次,然后剩下的次数暴力转移即可 cpp include include include using namespace std; const int 阅读全文
posted @ 2018-09-15 10:17 lokiii 阅读(156) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-09-11 20:34 lokiii 阅读(2) 评论(0) 推荐(0)
摘要:矩阵乘法一般不满足交换律!!所以快速幂里需要注意乘的顺序!! 其实不难,设f[i]为i的答案,那么f[i]=(f[i 1] w[i]+i)%mod,w[i]是1e(i的位数),这个很容易写成矩阵的形式,然后按每一位分别矩阵快速幂即可 矩阵: f[i 1] w[i] 1 1 f[i] i 1 0 1 阅读全文
posted @ 2018-09-07 16:51 lokiii 阅读(114) 评论(0) 推荐(0)
摘要:注意第一问不取模!!! 因为a+b=a|b+a&b,a^b=a|b a&b,所以a+b=a^b+2 (a&b) x^3x==2x可根据异或的性质以转成x^2x==3x,根据上面的推导,得到 x^2x=x+2x 2 (x&2x)==3x; 3x 2 (x&2x)==3x; x&2x==0; x&(x 阅读全文
posted @ 2018-09-06 09:33 lokiii 阅读(141) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-08-19 22:44 lokiii 阅读(2) 评论(0) 推荐(0)
摘要:今天真是莫名石乐志 一眼矩阵乘法,但是这个矩阵的建立还是挺有意思的,就是把sum再开一列,建成大概这样 然后记!得!开!long!long!! cpp include include using namespace std; const int N=20; long long n,b[N],c[N] 阅读全文
posted @ 2018-08-01 22:17 lokiii 阅读(142) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-07-23 10:51 lokiii 阅读(2) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-07-20 14:55 lokiii 阅读(3) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2018-07-10 22:45 lokiii 阅读(4) 评论(0) 推荐(0)
摘要:!:自环也算一条路径 矩阵快速幂,把矩阵乘法的部分替换成Floyd(只用一个点扩张),这样每“乘”一次,就是经过增加一条边的最短路,用矩阵快速幂优化,然后因为边数是100级别的,所以把点hash一下最多剩下200个 阅读全文
posted @ 2018-07-06 22:47 lokiii 阅读(185) 评论(0) 推荐(0)
摘要:1 include using namespace std; const int N=105; const long long inf=1e18; long long T,n,m; struct qwe { long long a[N][N]; qwe operator (const qwe &b) 阅读全文
posted @ 2018-07-01 09:41 lokiii 阅读(245) 评论(0) 推荐(0)
摘要:唔不知道怎么说……大概核心是把矩阵快速幂的乘法部分变成了Floyd一样的东西,非常之神 首先把点离散一下,最多有200个,然后建立邻接矩阵,a[u][v]为(u,v)之间的距离,没路就是inf 然后注意重载乘号的部分,注意到这样乘一次就相当于把本来存了经过k条路的最短路的邻接矩阵变成存了经过k+1条 阅读全文
posted @ 2018-05-06 12:04 lokiii 阅读(164) 评论(0) 推荐(0)
摘要:首先f长得就很像能矩阵优化的,先构造转移矩阵(这里有一点神奇的地方,我看网上的blog和我构造的矩阵完全不一样还以为我的构造能力又丧失了,后来惊奇的发现我把那篇blog里的构造矩阵部分换成我的构造方式,交了一下完全没问题2333,并不知道为啥) 好久没写矩阵加速了,顺便说一下我的构造方法吧: 首先明 阅读全文
posted @ 2018-03-20 10:13 lokiii 阅读(231) 评论(0) 推荐(0)
摘要:看n和k的范围长得就很像矩阵乘法了 设f[i][j]表示到第i个位置的后缀最长匹配目标串的j位。转移的话显然是枚举0~9,然后选择f[i+1]中能被他转移的加起来,需要用到next数组。然后构造矩阵的时候,在转移路径上++即可(注意代码里的f数组只是辅助构造矩阵的,和上文无关 在写挂了n次kmp之后 阅读全文
posted @ 2018-03-19 20:00 lokiii 阅读(138) 评论(0) 推荐(0)
摘要:首先建立矩阵,给每个格子编号,然后在4 4的格子中把能一步走到的格子置为1,然后乘n次即可,这里要用到矩阵快速幂 cpp include include using namespace std; const int mod=1e9+7; long long n,ans; struct qwe { l 阅读全文
posted @ 2018-01-23 18:06 lokiii 阅读(150) 评论(0) 推荐(0)
摘要:被空间卡的好惨啊———— 参考:http://blog.csdn.net/coldef/article/details/70305596 容斥,\\( ans=ans_{没有限制} ans{没有质数} \\) 动规递推式,\\( f[i][j]=\sum_{k=0}^{p 1}f[i 1][k] c 阅读全文
posted @ 2018-01-07 22:05 lokiii 阅读(134) 评论(0) 推荐(0)

1