摘要: 总览 假设现在有一个点分治可以做的题,但是因为被强制在线(带修或者其他原因)。显然有一种做法是每询问一次就点分一次,时间复杂度是$O(mn\log n)$,是一个并不太优秀的做法。 考虑到每次点分治都需要重新找一次重心以及统计信息等等,而事实上由于树的形态并不会改变,也就是说重心其实是并不会变化的。 阅读全文
posted @ 2021-01-20 22:09 Nanjo 阅读(63) 评论(0) 推荐(0) 编辑
摘要: Luogu P4809 这题很显然是要求最小生成树,但是看到数据范围,边数和点数都非常的多,所以暴力Kruskal并不可行。 优化求最小生成树的算法流程明显不可行,因为如果可优化的话那么这个算法的优化应该早就广为人知了。 所以从另一个方向想,找找这题的特殊性质。 我们可以发现每个星球内部的$P$条航 阅读全文
posted @ 2020-11-27 21:38 Nanjo 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 主席树在线维护区间不同数的个数 考虑一个序列${a_1,a_2,a_3,...,a_n}$,对于其中一个元素$a_i$,假定下一个和它相同的数是$a_j$,不难发现对于右端点大于$j$的区间,若这两个数对答案产生贡献,则贡献一定来自于$a_j$。 原因如下: 对于同时包含两个数的区间,我们可以认为在 阅读全文
posted @ 2020-11-25 15:55 Nanjo 阅读(87) 评论(0) 推荐(0) 编辑
摘要: Luogu P4568 飞行路线 众所周知,对于经典的最短路问题,我们可以使用各类算法来解决。 但是对于这道题,我们可以选取某些边,改变它的权值。 显而易见的一点就是直接套用SPFA或者Dijkstra并不能解决这个问题。 这时候我们引入一个叫做分层图的东西。 把每一个点复制$k$次,形成$k$层的 阅读全文
posted @ 2020-06-08 21:25 Nanjo 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 【Luogu P3806】点分治 点分治主要用于解决无根树上的一些路径统计问题。 点分治的基本步骤: 选定一个点作为根,把路径分为两类,一类是经过是根节点的,另一类是不经过根节点的。 dfs处理处这一棵路径的信息。 运用某些方法(双指针,树状数组,桶)等统计方法,确认答案。 删除根节点,对子树重复进 阅读全文
posted @ 2020-05-18 21:45 Nanjo 阅读(173) 评论(5) 推荐(1) 编辑
摘要: 声明:拓展CRT和CRT没什么关系 拓展CRT的做法:每次利用拓展欧几里得合并两条同余方程,最后就能得出结果。 \[ \begin{cases} x\equiv b_1 \pmod {a_1}\\ x\equiv b_2 \pmod {a_2}\\\end{cases} \] 对于这两条方程,我们分 阅读全文
posted @ 2020-05-13 21:57 Nanjo 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 通过判断使每一个合数只被其最小质因子筛去一次。 阅读全文
posted @ 2020-05-05 09:39 Nanjo 阅读(104) 评论(0) 推荐(0) 编辑
摘要: "Luogu P6185 NOI Online 1 冒泡排序" 首先定义$f(i)$表示序列中$i$位置前有多少个比他大的数。 根据冒泡排序的过程很容易发现一些$f(i)$的特点: + 每经过一轮冒泡排序,由$f(i)$构成的序列就会整体减一并且向左移动一位。 + 已经为$0$的$f(i)$不会发生 阅读全文
posted @ 2020-05-04 20:33 Nanjo 阅读(195) 评论(0) 推荐(0) 编辑
摘要: "Luogu P6185 NOI Online 1 序列" 将其转化为图论题。 定义:$u,v$为$a_i$所代表的点 $u',v'$为$b_i$所代表的点 对于操作$2$,将其视为一种权值搬运的操作,从$u$到$v$或者反过来转移点权。那么我们对$u,v$和$u',v'$连一条无向边,显然对于一个 阅读全文
posted @ 2020-05-04 13:41 Nanjo 阅读(209) 评论(0) 推荐(0) 编辑
摘要: 转自:https://www.cnblogs.com/812 xiao wen/p/10543023.html 阅读全文
posted @ 2020-05-04 09:44 Nanjo 阅读(237) 评论(0) 推荐(0) 编辑