![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线段树
悭吝韶华
在学习Unity和图形学.
展开
-
E. XOR on Segment(线段树+XOR)
按每一个二进制位拆成20棵线段树即可. 所以对于每颗线段树iii,我们关心的都只有一位,即二进制第iii位上是否有1. 线段树节点上维护一个cnt,表明这个线段内在该位上1的个数. lazy标记维护0或1,向下传递时1表明会改变子线段的cnt,即cnt=len-cnt. 传送门 #include<bits/stdc++.h> using namespace std; #define ll long long #define MAXN 100002 #define fore(n) for(int原创 2020-07-31 16:16:36 · 328 阅读 · 0 评论 -
Codeforces Round #373 (Div. 1)C. Sasha and Array(线段树上维护矩阵快速幂)
由于斐波那契数的范围达到了1e9,因为空间的限制,显然我们是无法通过数组存储斐波那契数列的。 对于后面的斐波那契数我们只能采取矩阵快速幂的形式进行求解。 斐波那契数列的矩阵递推非常好找 第k项的斐波那契数为(10) \begin{pmatrix} 1 & 0 \end{pmatrix}\!(10)乘上(0111)k\begin{pmatrix} 0 & 1 \\1 & 1 \end{pmatrix}\\^{k}(0111)k 这题有两个优化点,一个是lazy的优化,还有一个原创 2020-06-05 21:54:17 · 142 阅读 · 0 评论