![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分治
悭吝韶华
在学习Unity和图形学.
展开
-
C2. Balanced Removals (Harder)(分治+思维)
传送门 代码我直接模仿了tourist的…学习一下 复述一遍tourist的思路吧. 首先就是不考虑三维,我们只考虑一维X,显然按x坐标排序后,从左到右贪心连线即可,最多剩下一个点. 现在考略二维(X,Y),那么我们要可以先把Y相同的那些点一起按一维的方式处理,显然对于每个Y,最多只会剩下一个点. 现在我们得到了一堆Y不同的点,按Y排序后就又变成了一维,再按照一维的处理方式即可. 三维同理,即策略是先解决低维度,再解决比它高一维的问题,依次维度上升的分治思想. #include<bits/stdc++原创 2020-08-01 21:12:58 · 171 阅读 · 0 评论 -
CF888-G. Xor-MST-(分治+01字典树,最小异或生成树)
在01字典树上建点。 然后考虑怎么使得生成树最小。 从高位开始,按当前为1/0将所有数划分为两个集合(两者都不为空的情况下)。 这两个集合是分散的,所以我们需要一条边连接它们。 暴力枚举选取。 但是这样会遇到一个问题,即如何维护一段连续的区间,使得这个区间中的所有元素都在这个集合内。 我们只要对a数组排序,然后依次插入字典树即可。 所以我们对于树上的每个节点,记录对应的数组区间序号。 L数组和R数组表明当前节点对应数组的最小序号和最大序号。 分治暴搜即可。 #include<bits/stdc++.h原创 2020-07-28 23:35:10 · 159 阅读 · 0 评论