线段树
悭吝韶华
在学习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 · 346 阅读 · 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 · 148 阅读 · 0 评论