• 5.1总结


    开场就开始猛干A
    然后想了一下发现可以容斥
    容斥后就变为了计算公共子串方案数。
    每种本质不同子串只有最左边的和最右边的有用。
    然后就是区间加等差数列,用线段树做。
    由于好久没写sam了,调了很久才过了样例。
    结果交上去被卡成暴力分了。
    这是因为没有对拍,没有测极限数据

    题解:
    A
    好久都没碰过字符串了
    考虑容斥,用([1,i])本质不同字符串+([i+1,n])本质不同字符串-同时出现在([1,i][i+1,n])中的本质不同字符串。
    求前,后缀本质不同字符串数是经典问题(SDOI2016生成魔咒),用sam解决,每次加上后缀点的len-后缀点父亲的len。
    同时出现在([1,i][i+1,n])中的本质不同字符串,可以枚举每一种本质不同字符串考虑它的贡献。
    如果它对(i)分割点有贡献,则必须有一个该字符串的右端点在(i)左边,必须有一个必须有一个该字符串的左端点在(i)右边。
    它的出现位置显然是一个区间。
    显然只有最左,最右的出现位置有用,可以在sam上dfs求出最左,最右出现右端点
    这等价于枚举sam上的每个节点,每个节点代表串上的一类出现右端点相同的子串。
    它对答案的贡献是区间加一次函数。
    这显然可以用线段树维护,维护区间一次函数斜率,截距即可。
    时间复杂度(O(nlog_2n))

  • 相关阅读:
    MyBatis配置文件(四)--typeHandlers
    MyBatis配置文件(三)--typeAliases别名
    理解JWT的使用场景和优劣
    JWT的使用流程
    JWT (JSON WEB Token)正确使用场景
    转 Spring Security 简介
    转 Solr vs. Elasticsearch谁是开源搜索引擎王者
    Oauth2.0(一):为什么需要 Oauth2.0 协议?
    Spring Security 与 OAuth2(介绍)
    理解OAuth 2.0
  • 原文地址:https://www.cnblogs.com/ctmlpfs/p/14724241.html
Copyright © 2020-2023  润新知