不用快速幂,压位出奇迹! 本人是个蒟蒻,不太熟悉快速幂,这里给大家介绍一种压位大法. 让我们来分析一下题目,第一位是送分的,有一个专门求位数的函数:n*log10(2)+1. 然后题目中p<=3100000,又要求后500位,普通算法肯定超时,但如果我们多压几位甚至时间都比普通快速幂少.而且我们用 long long 的话可以一次就乘上2的20次方又能节省时间: 第一问: s=n*log10(2)+1;用函数算位数 cout<<s<<endl; 第二问:算后500位: whi…
正解:矩阵快速幂/tarjan+倍增 解题报告: 传送门! 跟着神仙做神仙题系列III 这题首先一看到就会想到快速幂趴?就会jio得,哦也不是很难哦 然而,看下数据范围,,,1×105,,,显然开不下TT 所以考虑优化快速幂(或找环+倍增 两种方法都港下趴 先说图论好辣QwQ 大概是这样的: 首先我们把每个座位都抽象成一个点,由它给我的A[]可以知道坐在每个座位上的人会移到哪儿 我们就可以理解为连了一条边 显然的是我们可以换了很多次之后换回来,于是就成了一个环了 然后我们就求一波强连通分量,这样…
To 洛谷.3373 [模板]线段树2 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数加上x 2.将某区间每一个数乘上x 3.求出某区间每一个数的和 输入输出格式 输入格式: 第一行包含三个整数N.M.P,分别表示该数列数字的个数.操作的总个数和模数. 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值. 接下来M行每行包含3或4个整数,表示一个操作,具体如下: 操作1: 格式:1 x y k 含义:将区间[x,y]内每个数乘上k 操作2: 格式:…
目录: 1:一道简单题[树形问题](Bzoj 1827 奶牛大集会) 2:一道更简单题[矩阵乘法][快速幂] 3:最简单题[技巧] 话说这些题目的名字也是够了.... 题目: 1.一道简单题 时间1s 题目描述 Bessie正在计划一年一度的奶牛大集会,来自全国各地的奶牛将来参加这一次集会.当然,她会选择最方便的地点来举办这次集会.每个奶牛居住在 N(1<=N<=100,000) 个农场中的一个,这些农场由N-1条道路连接,并且从任意一个农场都能够到达另外一个农场.道路i连接农场A_i和B_i…
P1939 [模板]矩阵加速(数列) 题目描述 a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1] (x>3) 求a数列的第n项对1000000007(10^9+7)取余的值. 输入输出格式 输入格式: 第一行一个整数T,表示询问个数. 以下T行,每行一个正整数n. 输出格式: 每行输出一个非负整数表示答案. 说明 对于30%的数据 n<=100: 对于60%的数据 n<=2*10^7: 对于100%的数据 T<=100,n<=2*10^9: 直接套矩阵快…
题目大意:给你一个数列a,规定$a[1]=a[2]=a[3]=1$,$a[i]=a[i-1]+a[i-3](i>3)$求$a[n]\ mod\ 10^9+7$的值. 解题思路:这题看似是很简单的递推,但是$n\leq 2×10^9$,递推肯定是会超时的.故我们需要优化. 常见优化有矩阵加速,还有什么我并不知道了. 用矩阵可将此类题目时间复杂度从$O(n)$优化为$O(\log_2 n)$. 具体对于此类形如$f(n)=f(n-1)*p(1)+f(n-2)*p(2)+...+f(n-k)*p(k)…
思路: 这个 a[1]=a[2]=a[3]=1 a[x]=a[x-3]+a[x-1] (x>3) 可以想成: [a(n) ] [1 0 1] [a(n-1)   ] [a(n-1) ] =   [1 0 0] * [a(n-2)  ] [a(n-2) ]  [0 1 0] [a(n-3)   ] 然后就是利用矩阵快速幂去算中间那个矩阵的n次结果 #include <iostream> #include <cstdio> #include <cstring> usi…
https://www.luogu.org/problemnew/show/P1939 矩阵快速幂 斐波那契数列 首先看一下斐波那契数列的矩阵快速幂求法: 有一个矩阵1*2的矩阵|f[n-2],f[n-1]|,要使它乘一个2*2的矩阵,使得到的矩阵为|f[n-1],f[n]|,即|f[n-1],f[n-2]+f[n-1]| 则该矩阵为 0  1 1  1 第一行第一列:f[n-2]*0+f[n-1]*1=f[n-1] 第一行第二列:f[n-2]*1+f[n-1]*1=f[n] 同理,对于本题:…
题意简述 \(a[1]=a[2]=a[3]=1\) \(a[x]=a[x−3]+a[x−1](x>3)\) 求a数列的第n项对1000000007取余的值. 题解思路 矩阵加速 设\[ F=\begin{bmatrix} 0&0&1\\1&0&0\\0&1&1\end{bmatrix}, G=\begin{bmatrix} 1\\1\\1\end{bmatrix}\] 则\[ \begin{bmatrix} a[n-3]\\a[n-2]\\a[n-1]…
矩阵快速幂模版 #include <iostream> #include <cstring> #include <cstdlib> #include <algorithm> #include <cstdio> #include <cmath> #define ll long long using namespace std; const int MOD = (int) 1e9+7; struct Matrix { static con…