摘要:
题面传送门 这题十分卡精度,我开到了$10^{-12}$才过去。 主要有两种做法。 两种做法的核心都是一样的,就是求出相邻两棵树在什么时候一样高。建权值为同样高时间的边,然后找出最大的连通块使的边权相同。 但是在找的过程中我们发现有一些树可能初始高度一样且生长速度一样,那么这些树在任何时候都相同高。 阅读全文
摘要:
题面传送门 吸了口氧一发最优解可还行。把$G$设为$1$,把$H$设为$-1$,$sum$为前缀和。 显然有$O(nk)$的$dp$:\(dp_i=\min\limits_{j=\max(1,i-k)}^{i-1}{dp_j+(sumi\geq sumj)}\) 这东西两个看起来不好优化。 但是注意 阅读全文
摘要:
题面传送门 原以为cf出了裸题。 然后发现不是。 考虑每一个修改其实可以变成修改当前点到下一次修改这个点的位置。 那么就可以上线段树分治乱搞。如果不改变就看成修改成自己。 注意$k$种颜色互不影响,所以可以分开算。 但是这个点修改成什么颜色不得而知。 线段树分治有一个性质就是一定先查询当前点再继续下 阅读全文
摘要:
题面传送门 显然对于一个集合的点会被拓展出一个长方形,也就是横着去重后的点数乘以竖着去重后的点数。 那么用一个扩展域并查集维护即可。 但是问题是有撤销,而并查集不支持撤销。 所以直接上线段树分治即可。注意要用可撤销并查集。 代码实现: #include<cstdio> #include<vector 阅读全文