P5110 【块速递推】】的更多相关文章

P5110 块速递推 题意 多次询问,求数列 \[a_i=\begin{cases}233a_{i-1}+666a_{i-2} & i>1\\ 0 & i=0\\ 1 & i=1\\ \end{cases} \] 的第 \(n\) 项在 \(\mod 1e9+7\) 意义下的值的异或和. 思路 首先这个数列是一个广义斐波那契数列.对于广义斐波那契数列,我们一般是用矩阵快速幂求的. 但是,这个题的询问次数是 \(5e7\) . 所以我们就必须用 \(O(1)\) 的方法处理询问…
题目大意: 给定一个数列a满足递推式 \(An=233*an-1+666*an-2,a0=0,a1=1\) 求这个数列第n项模\(10^9+7\)的值,一共有T组询问 \(T<=10^7\) \(N\)为\(64\)位正整数 首先感谢出题人的好心,凑了一个好模数,有循环节,于是复杂度骤降 麻麻我会矩阵快速幂! 时间复杂度约为\(O(T*log_{2}n)\) 但很抱歉,时间复杂度仍然不过关. 因为,丧心病狂的出题人把T开到了\(10^7\)!!! 预计得分\(6*1=6\) 这意味着,我们需要在…
传送门 思路 显然可以特征根方程搞一波(生成函数太累),得到结果: \[ a_n=\frac 1 {13\sqrt{337}} [(\frac{233+13\sqrt{337}}{2})^n-(\frac{233+13\sqrt{337}}{2})^n] \] (其实我也不知道是不是,网上抄的,懒得算了) 放在模意义下,得到 \[ a_n= 233230706\times (94153035^n-905847205^n) \pmod {1e9+7} \] 后面两个可以分块,预处理出\(x^{[1…
传送门 为啥我就没看出来有循环节呢-- 打表可得,这个数列是有循环节的,循环节为\(10^9+6\),然后分块预处理,即取\(k=sqrt(10^9+6)\),然后分别预处理出转移矩阵\(A\)的\(A^1,A^2,...,A^{k-1}\)和\(A^k,A^{2k},...\),那么每一次就能\(O(1)\)回答询问了 注意常数问题--这份代码勉强卡过--建议矩阵里的元素别开数组直接用四个变量存会快一点-- //minamoto #include<bits/stdc++.h> #define…
太菜了,不会生成函数,于是用特征方程来写的这道题 首先我们知道,形如\(a_n=A*a_{n-1}+B*a_{n-2}\)的特征方程为\(x^2=A*x+B\) 于是此题的递推式就是:\(x^2=233x+666\),即:\(x^2-233x-666=0\) 用求根公式解得:\(x_1=\dfrac{233+\sqrt{56953}}{2}, x_2=\dfrac{233-\sqrt{56953}}{2}\) 由于\(188305837≡\sqrt{56953}(mod\ 1e9+7)\) 所以…
题面 题解 线性常系数齐次递推sb板子题 $a_n=233a_{n-1}+666a_{n-2}$的特征方程为 $$ x^2=233x+666 \\ x^2-233x+666=0 \\ x_1=\frac{233+\sqrt{56953}}2,x_2=\frac{233-\sqrt{56953}}2 \\ \therefore a_n=\alpha x_1^n+\beta x_2^n \\ \because a_0=0,a_1=1 \\ \therefore \begin{cases} \alph…
题目链接 掌握了分块打表法了.原来以前一直想错了... 块的大小\(size=\sqrt n\),每隔\(size\)个数打一个表,还要在\(0\text{~}size-1\)每个数打一个表. 然后就可以做到\(O(1)\)查询了. 比如要求\(A^{n}\),只需要算出\(biao[n/size]*pow[n\mod size]\)就好了. 然后我是看题解用了通项公式..事实上套个矩阵也没有影响. #include <cstdio> #include <cmath> #defin…
正题 题目链接:https://www.luogu.com.cn/problem/P5110 题目大意 数列\(a\)满足 \[a_n=233a_{n-1}+666a_{n-2},a_0=0,a_1=1 \] \(T\)组询问给出\(n\)求\(a_n\) \(1\leq T\leq 5\times 10^7\),\(n\)在\(\text{unsigned long long}\)范围内 解题思路 上面那个递推式的特征方程就是\(x^2-233x-666\),直接带式子解出来\(x_0=\fr…
2476: 战场的数目 Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 58  Solved: 38[Submit][Status][Discuss] Description Input 输入文件最多包含25组测试数据,每个数据仅包含一行,有一个整数p(1<=p<=109),表示战场的图形周长.p=0表示输入结束,你的程序不应当处理这一行. Output 对于每组数据,输出仅一行,即满足条件的战场总数除以987654321的余数. Sample I…
系列文章 Visual Studio 2015速递(1)——C#6.0新特性怎么用 Visual Studio 2015速递(2)——提升效率和质量(VS2015核心竞争力) Visual Studio 2015速递(3)——ASP.NET 新特性 说是VS2015的高级特性,其实也高级不到哪里,看起来确实“高大上”,正如BUILD2015上演示的那样,你真的可以只用VS2015就可以“通吃”各种移动设备应用了,当然,是有条件的“通吃”,微软给了一系列的解决方案,来辅助完成这一目标. 首先我们来…