11 2019 档案
摘要:题面: 新年里,程序猿们往往会做一些有趣的事情。你则选择以往这棵树上加节点来取乐。 一个添加节点的操作是这样的: 1) 找到树上的一个叶子结点v 2)设现在树上有n个节点, 那么你现在会加入两个节点n+1和n+2,它们都会成为n的儿子.你的任务是在做q次这样的操作,并在每做完一次后计算一次树的直径。
阅读全文
摘要:求A点走到B点的所有路径中,最长的边最小值是多少? 两点间的路径要想尽量小,那么一定在最小生成树上(因为是贪心的加边),那么只用在最小生成树上去找最大值即可,既然是最小生成树那么就可以跳倍增lca来求两点间的路径的最大边
阅读全文
摘要:事实证明了只要暴力会卡常写的好,就可以去代替正解 第一题: 做法: 树状数组可以快速求出当前所有并查集中,比现在这个集合个数少c的集合个数(O(logn)) 就相当于求前缀和那种嘛 那么我们的做法就是去枚举每一个集合大小在树状数组中去查询比他小的集合个数来统计答案 卡常:1.只要到达当前集合上限即可
阅读全文
摘要:首先离散化然后对于每个区间按长度排序 然后考虑我们枚举l,可以发现r是单调不降的则可以使用双指针(时间复杂度:O(n) ) 怎么判断一个方案是否合法?用线段树维护一段区间上的每个点被覆盖了多少次以及覆盖次数最大值。 为什么这样可以保证答案的准确性? 因为显然是取一段长度连续的区间更优 总复杂度:每个
阅读全文
摘要:其实已经做过很多道了,但自己直到现在才重视起来它 以下大部分是看的洛谷日志:=w= 它可以处理一些常见的树上问题: 1.每个节点的答案是其子树的叠加,考虑利用这个性质处理问题 2.就是你必须通过整个子树来更新自己当前节点的信息的这种题 具体实现: 先遍历其非重儿子,获取它的ans,但不保留遍历后它的
阅读全文