摘要: 从上到下枚举上下底边,那么涉及两行的添加和删除。 首先预处理出对于每一列,每个位置添加和删除时,是否会对往下$k$个里出现这个颜色造成影响。 然后对于每种颜色维护一个长度为$m$的bitset,表示哪些列出现过该颜色。 那么每次修改时,找到前驱和后继,对这一行答案的影响是一段区间加,差分前缀和即可。阅读全文
posted @ 2017-12-02 02:17 Claris 阅读(281) 评论(0) 编辑
摘要: 求出Kruskal重构树,那么重构树上每个点的取值范围是定的。 考虑树形DP,则对于一个点,要么所有点水位相同,要么还未发生合并。 故$dp[x]=up[x]-down[x]+1+dp[l[x]]\times dp[r[x]]$。 时间复杂度$O(nm\log(nm))$。阅读全文
posted @ 2017-12-02 02:16 Claris 阅读(206) 评论(0) 编辑
摘要: 若$1$到$n$之间没有其它点,则$1$到$n$的距离为任意一点到它们距离的差值,按照距离关系判断每个点是挂在$1$上还是挂在$n$上即可。 否则$1$到$n$的距离只可能为任意一点到它们距离和的最小值,抽出$1$到$n$路径上所有点后,对于剩下的每个点判断它应该挂在那个点下面即可。 时间复杂度$O阅读全文
posted @ 2017-12-02 02:14 Claris 阅读(181) 评论(0) 编辑