摘要: 题目大意 给定一个$n \times m$的黑白矩阵,设点$(i,j)$的权值$w_{(i,j)}$为包含该点的全白矩阵的个数,求$\sum_{i=1}^n \sum_{j=1}^m w_{(i,j)}$ 题解 首先转化问题为全部白色子矩阵的面积和 然后考虑统计答案 我们计算以某点为右下角的矩阵的贡 阅读全文
posted @ 2018-12-20 19:17 A·H 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 留个坑慢慢填 概念 生成函数——用多项式表示数列的形式幂级数,其中函数的$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^ 阅读全文
posted @ 2018-12-19 19:48 A·H 阅读(208) 评论(0) 推荐(0) 编辑
摘要: 关键点的最小生成树? 关键点初始化为0,跑多源最短路,然后重构整个图,用Kruskal跑最小生成树 然后跑树链剖分在线回答询问 对树上每个点维护到链顶的最大值,结合线段树可以做到$\Theta(n \log n)$的复杂度 阅读全文
posted @ 2018-12-19 16:15 A·H 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 离散化+矩阵快速幂 首先看数据范围可以确定该题的算法为矩阵快速幂 然后易得转移矩阵 $$\begin{bmatrix} 1 & 1 & 0 \\ 1 & 1 & 1 \\ 0 & 1 & 1 \end{bmatrix}$$ 然后把障碍离散下来重构,获取每段区间内障碍的情况(共$2^3=8$种) 重构 阅读全文
posted @ 2018-12-13 17:19 A·H 阅读(169) 评论(0) 推荐(0) 编辑
摘要: fhq treap+lazy标记 就是几个题拼起来而已 cpp include"cstdio" include"cstring" include"iostream" include"algorithm" include"ctime" using namespace std; const int MA 阅读全文
posted @ 2018-12-12 17:15 A·H 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 矩阵快速幂+扩展欧拉定理 对于一个矩阵$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)$ 由此 阅读全文
posted @ 2018-12-11 21:42 A·H 阅读(460) 评论(0) 推荐(0) 编辑
摘要: "题目链接" 我们离线处理这些询问 在右端点所在的位置用 来`push_back`询问 维护每个数值最后出现的位置 从左往右扫,边走边回答询问 对于每个询问我们回答第一个`p[x] vec[MAXN]; void ins(int x,int v) { if(x =n) return; p[x]=v; 阅读全文
posted @ 2018-12-11 16:56 A·H 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 线段树优化建图 开一棵儿子向父亲连0边的线段树1 另一棵父亲向儿子连0边的线段树0 0向1的对应节点连0边 对于点向区间加边,我们从1对应的节点向0对应的区间连边 对于区间向点加边,我们从1对应的区间向0对应的节点连边 然后跑手写堆优化Dijkstra即可 时间复杂度$\Theta ((n+m\lo 阅读全文
posted @ 2018-12-10 17:38 A·H 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 手写压位高精即可通过 阅读全文
posted @ 2018-12-09 15:12 A·H 阅读(152) 评论(0) 推荐(0) 编辑
摘要: fhq treap 开俩哨兵节点,然后插入、删除、前驱、后继,统计即可 cpp include"cstdio" include"cstring" include"iostream" include"algorithm" include"ctime" using namespace std; cons 阅读全文
posted @ 2018-12-07 17:09 A·H 阅读(138) 评论(0) 推荐(0) 编辑