启发式合并
文章平均质量分 67
YB Lin
这个作者很懒,什么都没留下…
展开
-
2019 ICPC Asia Nanchang Regional K.Tree 树上启发式合并 + 动态开点线段树
传送门 文章目录题意:思路: 题意: 给你一棵树,每个点都有一个权值valvalval,求满足以下条件 (1)x!=yx!=yx!=y (2)xxx和yyy不互为祖先 (3)val[lca(x,y)]∗2=val[x]+val[y]val[lca(x,y)]*2=val[x]+val[y]val[lca(x,y)]∗2=val[x]+val[y] (4)len(x,y)<=klen(x,y)<=klen(x,y)<=k 求(x,y)(x,y)(x,y)的对数。 思路: 可以发现这个点对是可原创 2021-03-25 08:22:02 · 181 阅读 · 0 评论 -
CodeForces - 375D Tree and Queries 树启 + 思维
传送门 题意: 思路: 很明显子树问题会想到树启,让后如何updateupdateupdate呢?一个显然的思路就是维护一个树状数组,查询次数>=kj>=k_j>=kj的个数。但是这样复杂度是O(nlog2n)O(nlog^2n)O(nlog2n)的,有没有更优的方式呢?注意到我们可以维护一个出现次数的前缀和,记数组cnt[i]cnt[i]cnt[i]为出现次数为iii的颜色个数,c[i]c[i]c[i]为iii颜色出现的次数,当前颜色为colcolcol。每次更新的时候,比如说现在t原创 2021-03-12 11:36:29 · 130 阅读 · 0 评论 -
ac 梦幻布丁 启发式合并
题意:中文题。 对于每种颜色,我们都可以看成一个集合。让后把一种颜色变成另一种颜色就转换成了把两个集合的合并问题。显然我们有一个复杂度为O(NlogN)O(NlogN)O(NlogN)的启发式合并能完美的解决这个问题。 解决合并问题了,现在需要解决如何在合并的时候更新答案呢?显然如果我们将一段连续的颜色改成另一种颜色将有三种情况,总段数可能不变,可能减一,可能减二。而如果答案要减的时候,我们只需要看一下当前数前后两个数是否为要变成的颜色,是的话就需要分情况减了。 还有个小问题,就是我们需要将集合大小小的合.原创 2021-01-17 00:16:46 · 91 阅读 · 0 评论