
矩阵加速
C202044zxy
这个作者很懒,什么都没留下…
展开
-
[nowcoder 2020] 斐波
一、题目点此看题二、解法面对这种题的时候,不要急,急了反而没有。真正的方法是一步一步来,你会发现都是套路。解决本题需要三步走,这是由中国的国情决定的0x01怎么计算 fib2(i)fib^2(i)fib2(i) ,由于iii很大(1e101e101e10范围),除了矩阵加速我们别无选择,紧紧抓住我们唯一拥有的条件:fib(i)=fib(i−1)+fib(i−2)fib(i)=fib(i-1)+fib(i-2)fib(i)=fib(i−1)+fib(i−2)那么fib2(i)=fib2(i−1)+原创 2020-11-14 15:17:06 · 176 阅读 · 0 评论 -
小 Y 和恐怖的奴隶主
https://www.luogu.com.cn/problem/P4007原创 2020-10-07 19:16:44 · 236 阅读 · 0 评论 -
CF1106F Lunar New Year and a Recursive Sequence
一、题目点此看题二、解法数论算法大杂烩,iii了iii了虽然我们不知道fkf_kfk是多少,但是我们知道fnf_nfn和fkf_kfk的关系,记fkf_kfk的指数为111,发现我们对于上述递推式很容易算出fnf_nfn的指数,用矩阵乘法(别告诉我这个你不会),算出来的指数假设是nnn,那么(p=998244353p=998244353p=998244353):fn=fknmod pf_n=f_k^n\mod pfn=fknmodp还是很难,这意味着我们要解一个高次剩余方程(我以前原创 2020-10-05 10:29:03 · 140 阅读 · 0 评论 -
[NOI2020]美食家
一、题目点此看题二、解法首先写出暴力dpdpdp,设dp[i][j]dp[i][j]dp[i][j]为第jjj天到了点iii的最大愉悦值,转移:dp[v][j]=dp[u][j−w]+a[v]dp[v][j]=dp[u][j-w]+a[v]dp[v][j]=dp[u][j−w]+a[v]可以考虑用矩阵快速幂优化,每个点需要拆成555个表示555种不同时间的最大愉悦值。但这里我们要重新定义矩阵乘法:ci,k=max(ai,j+bj,k)c_{i,k}=\max(a_{i,j}+b_{j,k})ci,原创 2020-08-24 15:20:46 · 291 阅读 · 0 评论 -
CF718C Sasha and Array
一、题目点此看题二、解法原创 2020-08-15 20:52:45 · 230 阅读 · 0 评论 -
CF1182E Product Oriented Recurrence
一、题目点此看题二、解法原创 2020-08-11 08:41:14 · 128 阅读 · 0 评论 -
CF1151F Sonya and Informatics
https://www.luogu.com.cn/problem/CF1151F原创 2020-08-11 08:38:12 · 161 阅读 · 0 评论 -
CF954F Runner‘s Problem
一、题目点此看题二、解法本题显著的特点就是线段很长,但是段数很少,而且用dpdpdp来做转移也很简单,这很容易联想到分段矩阵加速。重点是线段的离散化,要把所有的端点插入一个数组中排序,再用类似差分的方法就可以标记一个段是否某一个限制线段所覆盖。值得注意的是我们的分段矩阵加速实际上是左开右闭的,所以一开始要插入l−1l-1l−1(左端点)#include <cstdio>#include <cstring>#include <iostream>#includ原创 2020-08-10 14:45:05 · 166 阅读 · 0 评论 -
CF821E Okabe and El Psy Kongroo
一、题目点此看题好像某谷还没有翻译,建议翻译看看第一篇题解(还有一个提示比较重要)二、解法首先不考虑线段的限制,容易写出式子dp[i][j]=dp[i−1][j]+dp[i−1][j+1]+dp[i−1][j−1]dp[i][j]=dp[i-1][j]+dp[i-1][j+1]+dp[i-1][j-1]dp[i][j]=dp[i−1][j]+dp[i−1][j+1]+dp[i−1][j−1]kkk这么大,联想到矩阵加速,因为高度保证只有151515,所以可以用15×1515\times1515×1原创 2020-08-10 11:11:43 · 193 阅读 · 0 评论 -
[NOI Online 3 提高组]魔法值
一、题目点此看题二、解法首先要理解这个aaa天,一个f0f_0f0有贡献的话一定是111和这个点有一条路径,那么我们只需要考虑这个长度为aaa的路径个数奇偶就行了,奇数的话计入贡献。现在就不难想到矩阵快速幂,求出邻接矩阵的aaa次方即可。这样做的时间复杂度是O(n3qloga)O(n^3q\log a)O(n3qloga),就算用bitsetbitsetbitset优化也要T\text{T}T,考虑我们只需要知道111到各个点的情况,那么我们预处理邻接矩阵的222幂次次方,每次用第一行去乘,相当原创 2020-05-27 15:56:42 · 243 阅读 · 0 评论 -
HDU 6395 Sequence
一、题目点此看题二、解法最难处理的是pn\frac{p}{n}np,由于这个最多只有根号个取值,我们可以数论分块,对于每个块内都跑一边矩阵加速。#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int mod = 1e9+7;int read(){ int x=0,flag=1;char c; while((c=getchar())&l原创 2020-05-21 15:27:11 · 134 阅读 · 0 评论 -
[SDOI2009]HH去散步
一、题目原创 2020-04-22 14:16:37 · 230 阅读 · 0 评论 -
HDU 2865 Birthday Toy
一、题目题目描述有一个nnn个点的环,相邻两点连边,有一个中心点向所有点连边,对这个环kkk染色,求旋转后本质不同的方案数。数据范围3≤n≤1e9,4≤k≤1e93\leq n\leq1e9,4\leq k\leq1e93≤n≤1e9,4≤k≤1e9二、解法首先中间的点只能是一种和其他点不一样的颜色,先钦定中间的颜色,其他的就变成了k−1k-1k−1染色,外面套一个burnside\t...原创 2020-04-17 22:10:41 · 211 阅读 · 0 评论 -
[POJ 2888]Magic Bracelet
一、题目题目描述长度为nnn的环mmm染色,给定kkk组不能挨在一起的颜色关系,求旋转后本质不同的方案数。数据范围1≤n≤1e91\leq n\leq1e91≤n≤1e9,1≤m≤101\leq m\leq101≤m≤10二、解法很明显是polya\text{polya}polya吧,我们枚举nnn的因数在用欧拉函数算答案,问题变成了不考虑本质不同的情况下算方案数。nnn这么大,应该...原创 2020-04-15 11:46:55 · 167 阅读 · 0 评论 -
[GXOI/GZOI2019]逼死强迫症
一、题目点此看题二、解法设f[i]f[i]f[i]为大小为2×i2\times i2×i的矩阵填充的方案数,首先考虑不放特殊格子(1×11\times 11×1),那么可以从f[i−1]f[i-1]f[i−1]和f[i−2]f[i-2]f[i−2]转移而来。考虑放特殊格子的情况,无论是放上面还是放下面,前面的格子的放法总是唯一的(和间隔的奇偶性有关),而且一定是要空两格的,设g[i]g[i]...原创 2020-03-03 10:28:08 · 301 阅读 · 0 评论 -
CF696D Legen...
一、题目点此看题二、解法定义dp[i][j]dp[i][j]dp[i][j]为长度为iii,匹配到jjj,看到文本串这么大就知道要用矩阵加速了吧。我们先构造出一步的矩阵,然后把它lll次方,找第000行的最大值即可。#include <cstdio>#include <cstring>#include <iostream>#include <...原创 2020-02-23 11:21:36 · 217 阅读 · 0 评论 -
[BJOI2017]魔法咒语
一、题目点此看题二、解法观察数据范围,发现这道题需要对数据分类讨论。0x01 l<=100在AC\text{AC}AC自动机上dpdpdp,设f[i][j]f[i][j]f[i][j]为长度为iii,在自动机上匹配到了点jjj,暴力转移即可。0x02 l<=1e8 且 基本词汇长度不超过2这种数据最大的特点就是f[i]f[i]f[i]只可能从f[i−1],f[i−2]f[...原创 2020-01-31 17:22:17 · 295 阅读 · 0 评论 -
Sasha and Array
一、题目codeforces题目描述维护一个数列aaa,要求下列两项操作:区间加上某一值询问区间,把每一个值当做下标,问∑fai\sum f_{a_i}∑fai,fff是斐波那契数列,f0=f1=1,fi=fi−1+fi−2f_0=f_1=1,f_i=f_{i-1}+f_{i-2}f0=f1=1,fi=fi−1+fi−2二、解法考虑到斐波那契数列的计算方式,可以用...原创 2020-01-06 14:22:24 · 274 阅读 · 0 评论 -
大魔法师
一、题目点此看题二、解法很容易看出来是线段树打标记的题,但是标记的顺序就很恶心。有一个很简洁的解法,就是把所有的修改操作看做矩阵乘法,标记也用矩阵维护,我们的值用一个4×14\times14×1的矩阵维护(设AAA是值,BBB是操作矩阵,用B×AB\times AB×A更新值):ABClen\begin{matrix}A\\B\\C\\len\end{matrix}ABClen然后操作...原创 2020-01-04 21:48:35 · 209 阅读 · 0 评论 -
Harry And Math Teacher
一、题目点此看题题目描述有nnn层楼,每层有两个门(编号为1/21/21/2),iii层到i+1i+1i+1的门两两相通,有下列操作:把iii层到i+1i+1i+1层的x,yx,yx,y两个门的状态改变(联通变成不同,不同变成联通)询问xxx到yyy的方案数,可以从xxx任意门入,yyy任意门出。数据范围多组数据,1≤n,m≤500001\leq n,m\leq 500001≤n...原创 2020-01-03 20:49:08 · 204 阅读 · 0 评论 -
Shlw loves matrixI
常系数齐次线性递推模板题原创 2020-01-03 16:20:25 · 178 阅读 · 0 评论 -
233 Matrix
一、题目点此看题题目描述有一个(0,0)(0,0)(0,0)到(n,m)(n,m)(n,m)的矩阵,第000行的元素分别是0,233,23330,233,23330,233,2333,第000列的元素分别是0,a1....an0,a_1....a_n0,a1....an,对于(i,j)(i,j)(i,j)(i≠0,j≠0i\not= 0,j\not=0i=0,j=0),有 a...原创 2019-12-31 08:43:38 · 498 阅读 · 0 评论 -
[SDOI2017]序列计数
一、题目点此看题二、解法0x01 朴素dp需要把题目中的这n个数的和是p的倍数转化成 这nnn个数的和%p\%p%p等于000,因为保证至少一个数是质数很难,我们可以用 全部-不含质数的方案数,设dp[i][j]dp[i][j]dp[i][j]为前iii个数的和%p\%p%p的值为jjj的总方案数,转移如下:dp[i][j]=∑dp[i−1][(j−k+p)%p]×cnt[k]dp[i]...原创 2019-12-17 20:09:56 · 193 阅读 · 0 评论 -
[HNOI2008]GT考试
一、题目点此看题题意:给定nnn为文本串的长度(只包含数字),和长度为mmm的模式串,问文本串中不包含模式串的方案数,答案对kkk取模。N≤109,M≤20,K≤1000N≤10^9,M≤20,K≤1000N≤109,M≤20,K≤1000二、解法0x01 暴力直接枚举每一种文本串,在HashHashHash和模式串比较,时间复杂度O(10n∗n)O(10^n*n)O(10n∗n)...原创 2019-08-11 17:28:59 · 250 阅读 · 0 评论