矩阵快速幂解法: 这是一个类似斐波那契数列的矩乘快速幂,所以推荐大家先做一下下列题目:(会了,差不多就是多倍经验题了) 注:如果你不会矩阵乘法,可以了解一下P3390的题解 P1939 [模板]矩阵加速(数列) P3390 [模板]矩阵快速幂 P1306 斐波那契公约数 P1962 斐波那契数列 P4838 P哥破解密码 由题意可得:相邻两个珠子中必有金属性珠子.这其实就可以理解为不能有连续的两个木属性珠子.这样一看,此题就和P4838 P哥破解密码差不多了.只不过这题是个2*2矩阵乘法 进入正…
题目大意:有一个$n(n\leqslant10^{18})$个点的环,每个点可以是$0$或$1$,要求相邻点中至少一个$1$,问方案数,多组询问. 题解:先考虑是一条链的情况,令$f_{i,j}$表示到了第$i$个点,这个点是$j$的方案数.$$f_{i+1,0}=f_{i,1}\\f_{i+1,1}=f_{i,0}+f_{i,1}$$再考虑一个环的情况,当第一点为$0$时,最后一个点只能选$1$,否则都可以.然后发现是$F_{n-1}+F_{n+1}$($F_n$表示斐波那契数列第$n$项)…
题意 多组数据,给出一个环,要求不能有连续的\(1\),求出满足条件的方案数 \(1\le T \le 10, 1\le n \le 10^{18}\) 思路 20pts 暴力枚举(不会写 60pts 假设金珠子为\(0\),木珠子为\(1\),则不能有连续的木珠子 线性递推\(DP\),设\(f[i][0/1]\)表示当前填到第\(i\)位,第\(i\)位为金珠子/木珠子的方案数,那么有: \[f[i][0] = f[i - 1][0] + f[i - 1][1] \] \[f[i][1] =…
题目背景 帕秋莉是蕾米莉亚很早结识的朋友,现在住在红魔馆地下的大图书馆里.不仅擅长许多魔法,还每天都会开发出新的魔法.只是身体比较弱,因为哮喘,会在咏唱符卡时遇到麻烦. 她所用的属性魔法,主要是生命和觉醒的“木”,变化和活动的“火”,基础和不动的“土”,果实和丰收的“金”,寂静和净化的“水”,机动和攻击的“日”,被动和防御的“月”七种属性 没有窗户的图书馆或许充满了灰尘,不过她认为在书旁边才是自己,所以她不能从书的旁边离开.这样已经一百年了. 题目描述 经过数年魔法的沉淀,帕秋莉将她那浩瀚无边的…
题目背景 帕秋莉是蕾米莉亚很早结识的朋友,现在住在红魔馆地下的大图书馆里.不仅擅长许多魔法,还每天都会开发出新的魔法.只是身体比较弱,因为哮喘,会在咏唱符卡时遇到麻烦. 她所用的属性魔法,主要是生命和觉醒的“木”,变化和活动的“火”,基础和不动的“土”,果实和丰收的“金”,寂静和净化的“水”,机动和攻击的“日”,被动和防御的“月”七种属性 没有窗户的图书馆或许充满了灰尘,不过她认为在书旁边才是自己,所以她不能从书的旁边离开.这样已经一百年了. 题目描述 经过数年魔法的沉淀,帕秋莉将她那浩瀚无边的…
原题传送门 "连续的两个中至少有1个金的"珂以理解为"不能有两个木相连" 我们考虑一个一个将元素加入手环 设f\([i][0/1]\)表示长度为\(i\)手环末尾有\(0/1\)个木的种类数 仔细想想发现它实际就是一个斐波那契数列(\(fib[1]=fib[2]=1\)) 因为首尾相接,所以开头要分类讨论 第一个是金:对答案的贡献为\(fib[n]+fib[n-1]\) 第一个是木:对答案的贡献为\(fib[n-1]\) 矩阵快速幂即可 #include <b…
qwq真的是一道好题qwq自己做基本是必不可能做出来的. 首先,如果这个题目只是求一个\(f\)数组的话,那就是一道裸题. 首先,根据样例 根据题目描述,我们能发现其实同样数字的不同排列,也是属于不同的方案的,那统计起来其实方便很多. 首先我们发现,对于\(i\)这个数,他可以拆出来\([1,m]\)任何一个数,接在对应的\(f[i-1]到f[i-m]\) 也就是说\(f[i]=f[i-1]+f[i-2]+f[i-3]....f[i-m]\) qwq那我们可以构造出转移矩阵 以\(m=3\)为栗…
题面传送门 又好久没做过 AC 自动机的题了,做道练练手罢( 首先考虑对于某个固定的字符串怎样求出它的伤害,我们考虑贪心,每碰到出现一个模式串就将其划分为一段,最终该字符串的代价就是划分的次数.具体来说我们记录一个 \(pre\) 表示上一次在 \(pre\) 与 \(pre-1\) 划分为一段,我们从前往后扫一遍,每扫到一个 \(i\),就检验 \(s[pre...i],s[pre+1...i],s[pre+2...i],\cdots,s[i...i]\) 中是否有子串在模式串中出现过,如果有…
本题就是求两点间只经过n条边的最短路径,定义广义的矩阵乘法,就是把普通的矩阵乘法从求和改成了取最小值,把内部相乘改成了相加. 代码包含三个内容:广义矩阵乘法,矩阵快速幂,离散化: 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int INF=0x3f3f3f3f; 4 const int N=120; 5 int Hash[1000005],cnt=0;//用于离散化 6 struct matrix{ 7 int m[N][N…
[Cogs2187]帕秋莉的超级多项式(多项式运算) 题面 Cogs 题解 多项式运算模板题 只提供代码了.. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<cmath> #include<algorithm> #include<set> #include<map> #include<vec…