zoukankan      html  css  js  c++  java
  • CF1098F

    题意

    洛谷

    做法

    显然得将串翻转
    (up_{l,k})(l)至根节点路径上深度为(k)的点

    [egin{aligned} sumlimits_{i=l}^rlcp(s_{l,r},s_{i,r})&=sumlimits_{k=1}^{L=r-l+1}min(dep(lca(l,l+k-1)),L-k+1)\ &=sumlimits_{k=1}^L up_{l}(k)cap[l,l+L-k]\ &=sumlimits_{k=1}^L up_{l}(k)cap[1,l+L-k]-sumlimits_{k=1}^L up_{l}(k)cap[1,l-1]\ end{aligned}]

    考虑多次查询(sumlimits_{k=1}^L up_{l}(k)cap[1,l-1])
    (S_1(L,l,M)=sumlimits_{k=1}^L up_{l}(k)cap[1,M]),即(l)至根节点最上面(L)个点,每个点子树与([1,M])所交之和。
    (l)至根最上面的(L)个点([1,L])
    考虑重链剖分。(l)至根节点的剖分,每条链都有一个值(len_q),表示这条链有多少个点最上面(L)个点;([1,M]),单独考虑任意点(i),将其至根的路径全部(+1),每条链有一个值(len_p)。每条链对答案的贡献为(min(len_q,len_p))。其实就是([1,M])中的每个点与([1,L])之交的和。
    考虑如何处理(min(len_q,len_p))
    将所有询问与([1,n])对重链的操作挂到链上去,则可以单独考虑一条链。
    我们离线扫描(xin [1,n]),令(a_i)(len_p=i)的个数。则对查询的贡献为(len_qsumlimits_{i>len_p}a_i+sumlimits_{i<len_p}i imes a_i)

    考虑多次查询(sumlimits_{k=1}^L up_{l}(k)cap[1,l+L-k])
    (S_2(L,l,M)=sumlimits_{k=1}^L up_{l}(k)cap[1,M-k])
    依然考虑一条链的(len_q,len_p),但([1,M-k])是动态右边界。这样处理(sumlimits_{k=1}^{len_q}sumlimits_{v=1}^n [kle len_pAnd vle M-(k+dep_y)](len_pin i))(y)是当前链轻边上面。
    (v+dep_y+len_ple M)这类的可以化简为:(sumlimits_{v=1}^n [v+dep_y+len_ple M]min(len_q,len_p))
    (v+dep_y+len_p>M)这类可化简为:(sumlimits_{k=1}^{len_q}sumlimits_{v=1}^n [vle M-(k+dep_y)And len_p>M-(k+dep_y)])

  • 相关阅读:
    积累-T
    HTML:文件标签(四)
    HTML:文件标签(三)
    HTML:文件标签(二)
    队列:最近的请求次数 (Leetcode 933 / Leetcode 232 / 剑指09 / Leetcode 225 / Leetcode 862 )
    HTML:文件标签(一)
    HTML: 介绍 & 规范
    java.sql.SQLException: Access denied for user 'root '@'localhost' (using password: YES)
    JDBC和XML- 学习笔记
    数据库: 商城案例
  • 原文地址:https://www.cnblogs.com/Grice/p/12905353.html
Copyright © 2011-2022 走看看