zoukankan      html  css  js  c++  java
  • 一些$LCT$的瓜皮题目

    一些瓜皮

    放几个比较优(she)秀(pi)(LCT)题。
    老惯例,每一题代码因为一些未知原因消失了(如果要的话私我好了,虽然会咕咕咕)。
    嘴巴(AC)真香!

    [SP16580] QTREE7

    对黑色、白色各开一棵有根(LCT)
    (x)点加入颜色(c)集合,则在(c)的那颗(LCT)上连接((x,fa_x)),在另一棵上断掉父亲边。
    查询时,首先判断根结点是否在当前颜色集合内。
    如果在的话直接查整棵(LCT)
    否则走向右儿子,查询对应子树。
    什么子树最大值啥的维护一下子树信息,拿(multiset)搞搞就行了。

    [BZOJ2959] 长跑

    动态联通图?这种东西估计只有鸽子他们才会吧......
    注意到边是任意定向,所以一个环等价于都能走,直接缩起来即可。
    所以如果当前连边两点已经在一个联通块了,那么直接暴力缩点。

    [LOJ6041] 事情的相似度

    (SAM),那么两个结点的(LCA)就是它们的最大(lcp)
    离线,依次加入左端点,那么它沿着(SAM)(fail)树一路往上爬,遇到的所有右端点都有贡献。
    这是(LCT)的经典应用,就是一个(Access)
    并且显然只有最靠左的右端点有用,所以(LCT)维护最小右端点即可。
    最后得到了若干二元组,扫描线一遍完事。

    [ZJOI2018] 历史

    显然每个结点的答案只与/子树内战争个数(sum)/和//最大战争个数的子树/的战争个数(mx)//有关。
    (mx > lceil frac{sum}{2} ceil)时,(Ans = 2(sum-mx)),否则(Ans = sum-1)
    一个直观想法就出来了,直接有根(LCT)维护子树最大值,每次(Access)更新答案。
    吉老师:(naive)
    问题在于:每次(PushUp)需要知道子树大小,而知道子树大小需要(Splay)当前结点。
    所以这题就变仙了。
    直接类似(LCT)维护状态,对于满足(mx> lceil frac{sum}{2} ceil)的儿子用重链连接,否则用轻链连接。
    可以发现一条重要性质:爆跳父亲,重链个数不会超过(log_2(deep))
    然后真相大白,全部暴力维护即可。

    [BZOJ2888] 资源运输

    维护重心是一个老的不行的套路了,使用启发式合并可以秒杀。
    问题在于维护所有点到重心的距离和。
    点分治?做梦吧你!
    可以发现,对每一个点维护联通块内的点到其的距离和相当浪费。
    其实我们只需要知道重心的该信息。
    所以就只在重心维护这个信息,考虑重心移动时的转移,发现只需要再维护子树和就行了。
    由于我们需要支持(Link)操作的同时维护子树信息,所以依旧需要维护换根反转标记。

    [BZOJ3779] 重组病毒

    显然染色操作就相当于(Access),然后考虑贡献。
    我们把减少量差分处理,那么对于重链链顶的子树,答案全部减少了(1)
    同时对于原来的重链儿子,其颜色会相对来说增加(1)
    把原树给剖一下然后线段树区间修改直接维护即可。
    现在有了换根操作,其实是一样的。
    可以发现,换根后进行一次染色,等价于先染色然后换根(反正那条链的颜色只有一个)。
    所以就当作什么都没发生,直接换根。
    由于现在根可以在查询点的子树内,所以这种情况加贡献也要特殊处理,稍微弄一下就行了。

    [BZOJ4573] 大森林

    (n)(LCT)是不可能的,这辈子都不可能的。
    由于询问保证查询点一定在树上,所以把那些多余的点全部建出来是没有影响的。
    所以唯一难办的操作就是更换生长结点了,此时需要集体换父亲操作。
    不难想到,对于第(i)个生长结点,建立一个虚拟结点(p_i),把长在它下面的结点全部连在(p_i)上。
    现在可以解决集体换父亲了,但如何放置这些虚拟结点使其满足对应包含关系?
    我们使用一种近乎疯狂的方式解决这个问题。
    离线。
    在算法开始前,我们把(p_i)连接到(p_{i-1})下面。
    那么当碰到更换生长结点操作(i)的左端点时,直接把(p_i)连接到对应位置。
    在该操作结束后,把(p_i)重新连接回(p_{i-1})下面。
    包含关系显然时刻都是对的。
    然后查询答案涉及求(LCA)(可能为虚点),很棒的是(LCT)完美兹瓷该操作。

  • 相关阅读:
    JAVA 数据结构(16):SET(一)Java HashSet
    JAVA 数据结构(15):LIST(二)Java LinkedList
    PGSQL数据库里物化视图【materialized view】
    PGSQL存储过程学习
    PostgreSQL数据库结构
    javascript里面的document.getElementById
    odoo14学习----x2many操作与图片设置继承image.mixin
    odoo14在tree、kanban视图上添加dashboard
    odoo14在列表视图里添加自定义按钮
    python开发包之pyecharts
  • 原文地址:https://www.cnblogs.com/GuessYCB/p/10199976.html
Copyright © 2011-2022 走看看