题目链接

掌握了分块打表法了。原来以前一直想错了。。。

块的大小\(size=\sqrt n\),每隔\(size\)个数打一个表,还要在\(0\text{~}size-1\)每个数打一个表。

然后就可以做到\(O(1)\)查询了。

比如要求\(A^{n}\),只需要算出\(biao[n/size]*pow[n\mod size]\)就好了。

然后我是看题解用了通项公式。。事实上套个矩阵也没有影响。

#include <cstdio>
#include <cmath>
#define ll unsigned long long
#define MOD 1000000007
namespace Mker{
ll SA,SB,SC;
void init(){scanf("%llu%llu%llu",&SA,&SB,&SC);}
ll rand(){
SA^=SA<<32,SA^=SA>>13,SA^=SA<<1;
ll t=SA;
SA=SB,SB=SC,SC^=t^SA;return SC;
}
}
int T, ans, tmp, a[1000010], b[1000010], c[1000010], d[1000010], e, size;
int n;
inline int f_pa(int k){
return (long long)a[k / size] * c[k % size] % MOD;
}
inline int f_pb(int k){
return (long long)b[k / size] * d[k % size] % MOD;
}
inline void make_a(int n, int k){
tmp = 1;
while(k){
if(k & 1) tmp = (long long)tmp * n % MOD;
n = (long long)n * n % MOD;
k >>= 1;
}
a[e] = tmp;
}
inline void make_b(int n, int k){
tmp = 1;
while(k){
if(k & 1) tmp = (long long)tmp * n % MOD;
n = (long long)n * n % MOD;
k >>= 1;
}
b[e] = tmp;
}
int main(){
size = sqrt(1000000006); c[0] = d[0] = 1;
for(int i = 0; i <= 1000000006; i += size, ++e)
make_a(94153035, i), make_b(905847205, i);
for(int i = 1; i < size; ++i) c[i] = (long long)c[i - 1] * 94153035 % MOD;
for(int i = 1; i < size; ++i) d[i] = (long long)d[i - 1] * 905847205 % MOD;
scanf("%d", &T);
Mker::init();
while(T--){
n = Mker::rand() % 1000000006;
ans ^= (233230706ll * (f_pa(n) - f_pb(n)) % MOD + MOD) % MOD;
}
printf("%d\n", ans);
return 0;
}

【洛谷 P5110】 块速递推(矩阵加速,分块打表)的更多相关文章

  1. 洛谷 P5110 块速递推

    题目大意: 给定一个数列a满足递推式 \(An=233*an-1+666*an-2,a0=0,a1=1\) 求这个数列第n项模\(10^9+7\)的值,一共有T组询问 \(T<=10^7\) \ ...

  2. 洛谷P5110 块速递推 [分块]

    传送门 思路 显然可以特征根方程搞一波(生成函数太累),得到结果: \[ a_n=\frac 1 {13\sqrt{337}} [(\frac{233+13\sqrt{337}}{2})^n-(\fr ...

  3. P5110 块速递推-光速幂、斐波那契数列通项

    P5110 块速递推 题意 多次询问,求数列 \[a_i=\begin{cases}233a_{i-1}+666a_{i-2} & i>1\\ 0 & i=0\\ 1 & ...

  4. P5110 块速递推

    传送门 为啥我就没看出来有循环节呢-- 打表可得,这个数列是有循环节的,循环节为\(10^9+6\),然后分块预处理,即取\(k=sqrt(10^9+6)\),然后分别预处理出转移矩阵\(A\)的\( ...

  5. P5110 【块速递推】

    太菜了,不会生成函数,于是用特征方程来写的这道题 首先我们知道,形如\(a_n=A*a_{n-1}+B*a_{n-2}\)的特征方程为\(x^2=A*x+B\) 于是此题的递推式就是:\(x^2=23 ...

  6. Luogu5110 块速递推

    题面 题解 线性常系数齐次递推sb板子题 $a_n=233a_{n-1}+666a_{n-2}$的特征方程为 $$ x^2=233x+666 \\ x^2-233x+666=0 \\ x_1=\fra ...

  7. 洛谷P1240-诸侯安置+递推非搜索

    诸侯安置 这道题是一题递推题,一开始自己不知道,用了搜索,只过了三个样例: 两两相同的合并, 成 1,1,3,3,5,5........n*2-1; 然后我们会容易发现一种不同与搜索的动态规划做法. ...

  8. P5110-块速递推【特征方程,分块】

    正题 题目链接:https://www.luogu.com.cn/problem/P5110 题目大意 数列\(a\)满足 \[a_n=233a_{n-1}+666a_{n-2},a_0=0,a_1= ...

  9. 洛谷P2151 [SDOI2009] HH去散步 [矩阵加速]

    题目传送门 HH去散步 题目描述 HH有个一成不变的习惯,喜欢饭后百步走.所谓百步走,就是散步,就是在一定的时间 内,走过一定的距离. 但是同时HH又是个喜欢变化的人,所以他不会立刻沿着刚刚走来的路走 ...

随机推荐

  1. Swift-可选值(Optional)讲解

    前提:Swift中有规定:对象中的任何属性在创建时,都必须要有明确的初始化值 1.定义可选类型 方式一:常规方式(不常用) var name : Optional<String> = ni ...

  2. Jenkins系列-Jenkins插件备份

    Jenkins管理插件 为了让所有的插件在 Jenkins 内可用,所有插件的列表可以访问链接 − https://wiki.jenkins-ci.org/display/JENKINS/Plugin ...

  3. CSS设计指南之一 HTML标记与文档结构

    HTML标记与文档结构 之所以从HTML讲起,是因为CSS的用途就是为HTML标记添加样式. 1.1 HTML标记基础 对于每个包含内容的元素,根据它所包含的内容是不是文本,有两种不同的方式给它们加标 ...

  4. 面试:谈谈你对jQuery的理解

    jQuery是一个轻量级的javascript框架,极大的简化了js的编程. 1.首先jQuery提供了强大的元素选择器.用于获取html页面中封装了html元素的jQuery对象.像常见的选择器有: ...

  5. dashboard and reporting Interface analysis

    dashboard and reporting Interface analysis > show system show system backup show system counters ...

  6. 未找到与约束ContractName Microsoft.VisualStudio.Text.ITextDocumentFactoryService...匹配的导出

    安装微软的windows补丁 KB2781514 ,补丁主要解决“在 .NET Framework 4.5 更新之后,Visual Studio 用户可能无法打开或创建 C++ 或 JavaScrip ...

  7. Android ListView 中加入CheckBox/RadioButton 选择状态保持、全选、反选实现

    最近在一个项目中,需要在ListView的item中加入CheckBox,但是遇到的一个问题是上下滑动的时候如果有选择了的CheckBox,就会出现选择项错误的问题,下面将个人的解决方法总结如下;先说 ...

  8. POJ3335:Rotating Scoreboard——题解

    http://poj.org/problem?id=3335 题目大意:给按照顺时针序的多边形顶点,问其是否有内核. —————————————————————————————— 看了两个小时的资料, ...

  9. BZOJ5312:冒险——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=5312 Kaiser终于成为冒险协会的一员,这次冒险协会派他去冒险,他来到一处古墓,却被大门上的守护 ...

  10. BZOJ1591 & 洛谷2924:[USACO2008 DEC]Largest Fence 最大的围栏——题解

    http://www.lydsy.com/JudgeOnline/problem.php?id=1591 https://www.luogu.org/problemnew/show/P2924#sub ...