摘要:
题目大意 给定一个$n \times m$的黑白矩阵,设点$(i,j)$的权值$w_{(i,j)}$为包含该点的全白矩阵的个数,求$\sum_{i=1}^n \sum_{j=1}^m w_{(i,j)}$ 题解 首先转化问题为全部白色子矩阵的面积和 然后考虑统计答案 我们计算以某点为右下角的矩阵的贡 阅读全文
摘要:
留个坑慢慢填 概念 生成函数——用多项式表示数列的形式幂级数,其中函数的$i$次项系数对应数列的第$i$项 即$A \to \sum_{i=0}^{\infty} a_ix^i$ 例如: $[1,1,1,1,1,...] \to 1+x+x^2+x^3+x^4+ ... $ $[1,a,a^2,a^ 阅读全文
摘要:
关键点的最小生成树? 关键点初始化为0,跑多源最短路,然后重构整个图,用Kruskal跑最小生成树 然后跑树链剖分在线回答询问 对树上每个点维护到链顶的最大值,结合线段树可以做到$\Theta(n \log n)$的复杂度 阅读全文
摘要:
离散化+矩阵快速幂 首先看数据范围可以确定该题的算法为矩阵快速幂 然后易得转移矩阵 $$\begin{bmatrix} 1 & 1 & 0 \\ 1 & 1 & 1 \\ 0 & 1 & 1 \end{bmatrix}$$ 然后把障碍离散下来重构,获取每段区间内障碍的情况(共$2^3=8$种) 重构 阅读全文
摘要:
fhq treap+lazy标记 就是几个题拼起来而已 cpp include"cstdio" include"cstring" include"iostream" include"algorithm" include"ctime" using namespace std; const int MA 阅读全文
摘要:
矩阵快速幂+扩展欧拉定理 对于一个矩阵$A$,我们有$A^n \equiv A^{n\% \phi(m)+\phi(m)}(\%m)$ 经过简单的列举或推导可得 设目前进行了$x$轮,$f(x)$为分子,$g(x)$为分母 则有$f(x)=g(x 1) f(x 1),g(x)=2g(x 1)$ 由此 阅读全文
摘要:
"题目链接" 我们离线处理这些询问 在右端点所在的位置用 来`push_back`询问 维护每个数值最后出现的位置 从左往右扫,边走边回答询问 对于每个询问我们回答第一个`p[x] vec[MAXN]; void ins(int x,int v) { if(x =n) return; p[x]=v; 阅读全文
摘要:
线段树优化建图 开一棵儿子向父亲连0边的线段树1 另一棵父亲向儿子连0边的线段树0 0向1的对应节点连0边 对于点向区间加边,我们从1对应的节点向0对应的区间连边 对于区间向点加边,我们从1对应的区间向0对应的节点连边 然后跑手写堆优化Dijkstra即可 时间复杂度$\Theta ((n+m\lo 阅读全文
摘要:
fhq treap 开俩哨兵节点,然后插入、删除、前驱、后继,统计即可 cpp include"cstdio" include"cstring" include"iostream" include"algorithm" include"ctime" using namespace std; cons 阅读全文