zoukankan      html  css  js  c++  java
  • 线段树合并杂题

    按照 这个题单 做的。

    有一些单独发了题解(前三题浓缩在了我的一篇文章中),在这里就不说了。

    准备填坑。 准备没事做了再打,因为感觉它们思路简单却代码长,懒啊……

    如果有什么建议请在评论区纠正我,感谢!

    rot-tree (已做)

    给每个点创造一个权值线段树。点 $o $ 的线段树代表以 (o) 为根的子树的树,有哪些值。

    假设现在我们在线段树合并阶段,对于一个点,设它的两个儿子是 (o1)(o2)(o1)(o2) 的线段树中的点 (lsim r),它的逆序对个数是多少?我们这样讨论:

    1. 左子树的贡献
    2. 右子树的贡献
    3. 跨过左右子树的贡献

    对于1和2,我们递归求解。对于3,因为是权值线段树,左边子树的值域肯定比右边子树的值域小,所以乘起来就是贡献。即,如果不交换左右子树,贡献就是 ans1=tre[ o1右儿子 ].val X tre[ o2左儿子 ].val,交换同理,贡献为 ans2=...。合并完后,线段树合并到它们那和蔼可亲的父亲。ans1和ans2要取个min,加到总答案中。

    谈笑风生 (未做)

    点 $o $ 的线段树代表以 (o) 为根的子树中的节点,深度是多少。然后对于点 (o) 的询问,query(dep[o],dep[o]+k),以及fa=o的kth祖先;query(fa,fa[o]+k)。然后记得加上 (c) 的贡献。

    Dominant Indices (已做)

    同blood cousins,线段树多记一个最大值。

    注意细节。。。这里存的是无向边,blood cousins存的是有向边,坑杀我也!

    Tree Requests (未做)

    值域线段树?可能要边合并边处理……还没想好。但是回文串的条件是至多只有一种字母是出现奇数次的。

    看了题解是 (2^{26}) 状压

  • 相关阅读:
    等比数列求和公式
    整数除法向上取整
    P3601 签到题
    AcWing 787. 归并排序
    约数个数与约数和专题
    幻灯片
    Div+css学习笔记
    css的树形菜单
    javascript省市联动封装
    url传递中文的解决方案
  • 原文地址:https://www.cnblogs.com/BlankAo/p/14015551.html
Copyright © 2011-2022 走看看