![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并查集
文章平均质量分 58
wlhz2017
这个作者很懒,什么都没留下…
展开
-
hdu 5606 /BC 68B tree
如果一个点与其他点之间边权均为1 则 这个点的最近点个数为1(即它本身) 否则 由边权为0相连 形成一个联通集 如5个点相连 则这5个点的最近点个数为5 (最后处理时会有4个异或为0) 所以使用并查集 用0边权进行连通 通过每个子集中点的个数进行计算即可 #include #include #include #include #include #include #include #includ原创 2016-01-28 09:49:22 · 410 阅读 · 0 评论 -
HDU 5604/BC 67E merge
首先要算清对于某一个集合时的最优方案 即在其中间值附近的两个点上 他们做最后一步移动 两个点分别为 a[i]和a[i+1] 则 最后答案为 max(a[i]-small, big-a[i+1])+(a[i]+a[j])/2; 所以如果把集合放在set里 那么我们只要找到(small+big)/2附近的几个点 计算一下即可 对于集合的合并 学习了启发式合并 启发式 即将小的向大的上合并 可原创 2016-01-30 16:29:10 · 441 阅读 · 0 评论