热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

bzoj3068:小白树

双带权重心?枚举分解点x,x子树内找到一个,x子树外找到一个考虑一般的操作是贪心移动,与子树总权值有关系所以不妨按照子树权值

双带权重心?

枚举分解点x,x子树内找到一个,x子树外找到一个

考虑一般的操作是贪心移动,与子树总权值有关系

所以不妨按照子树权值进行树链剖分

那么一个点子树内的重心一定在重链上。

从重儿子贪心往上走即可

子树外?

设子树外所有点权值总和是c

先倍增二分找到第一个扣除x的子树总权值之后权值>c/2的

再从这个子树的重链往下走,找到第一个子树权值>c/2的。用线段树二分实现

但是bzoj卡空间,然后咕了。

代码.cpp

View Code

找重心:贪心移动,权值树剖!

双信息:枚举分割点

 

转:https://www.cnblogs.com/Miracevin/p/10834686.html



推荐阅读
author-avatar
扯淡的青春0707
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有