zoukankan      html  css  js  c++  java
  • 一些题

    Cheat

    首先建出sam。
    答案显然具有单调性,考虑二分答案,可以通过dp来check。
    (f_{i})表示当前匹配到第i个字符,最大能够匹配的字符数。
    设二分的值为(k),一个显然的暴力是(f_{i}=max(f_{j}+i-j+1))(j)(i)能够匹配,(i>=j-k)。匹配的过程可以在广义后缀自动机上实现。
    但是这个过程复杂度过高,考虑优化。首先可以发现对于某个位置,向前能够匹配的长度是一定的,可以预处理出来,在后缀自动机上跑,失配跳fa即可实现(O(n))预处理。
    再看,这个dp的转移过程具有单调性,因此可以用单调队列优化。
    (O(len*loglen))
    你的名字

    首先考虑68分暴力,对询问串建出sam,能够预处理出来每个位置能够贡献的本质不同子串数。将询问串放在(S)的sam上跑,能够处理出来每个位置匹配的最长长度,那么这个位置对于答案的贡献就是(len_{x}-max(len_{fa},len_{匹配}))
    对于任意位置的询问,与上面的区别是,匹配的过程变得无法继续了。可以用可持久化线段树合并预处理出每个sam上每个点的endpos集合,匹配过程中只要判断当前节点是否存在特定区间的endpos就可以继续完成匹配。
    需要注意的是,在匹配的过程中,不能一旦失配就立刻跳fa,因为当前匹配长度可能不存在合法的endpos,然而当前节点的另一长度可能合法,因此需要先(len--),直到长度达到父亲节点的(len)才能跳。匹配仍然是线性的。
    DZY Loves Math

    化一化式子,发现最后只需要求这个东西:

    [g(x)=sumlimits_{i|x} f(i)mu(frac{x}{i}) ]

    暴力求似乎(?)过不了,所以我们考虑线筛。
    首先只有(mu(x))只有不含平方因子的时候不为0,所以(f(i)=f(x))(f(i)=f(x)-1)
    考虑分情况讨论:
    $$egin{aligned}
    g(x)&=sumlimits_{i|x}f(i)mu(frac{x}{i})
    &=f(x)sumlimits_{i|x且f(i)=f(x)}mu(frac{x}{i})+(f(x)-1)sumlimits_{i|x且f(i)f(x)-1}mu(frac{x}{i})
    &=f(x)sumlimits_{i|x}mu(frac{x}{i})-sumlimits_{i|x且f(i)
    f(x)-1}mu(frac{x}{i})
    end{aligned}

    [可以发现,第一项全都是0,因此只需要考虑第二项。 设$x=prod p_i^{c_i}$,将x的所有质因子分为两部分,一种是$c_i=f(x)$的,其他是另一种。 可以发现,如果存在第二种,那么由于选第二种质因子时奇偶情况相同,$g(x)=0$。 否则第一部分每个质因子的指数都要为1才能满足条件,那么根据第一部分含有的质因子种数即可确定$g(x)$的取值。 <font size=4> hdu6363 bookshelf <font size=3> 记两个结论: $gcd(fib_x,fib_y)=fib_{gcd(x,y)}$ $gcd(x^i-1,x^j-1)=x^{gcd(i,j)}-1$ 然后可以用挡板法算出贡献,直接容斥即可。 <font size=4> DZY Loves Math IV 由于n很小,所以我们可以枚举i,令$S(n,m)=sumlimits_{i=1}^{m}{varphi(ni)}$ 一个结论,当i的质因子集合是j的子集时,有:$varphi(ij)=ivarphi(j)$ 考虑$i=prod p_i^{c_i}$,$x=prod p_i$,$y=frac ix$ $$egin{aligned} S(i,m)&=y*sumlimits_{j=1}^{m}{varphi(xj)}\ &=y*sumlimits_{j=1}^{m}varphi(frac {x}{gcd(x,j)})*varphi(j)*gcd(x,j)\ &=y*sumlimits_{j=1}^{m}varphi(frac {x}{gcd(x,j)})*varphi(j)*sumlimits_{k|x且k|j}varphi(k)\ &=y*sumlimits_{j=1}^{m}varphi(j)sumlimits_{k|x且k|j}varphi(frac {x}{k})\ &=y*sumlimits_{j|x}varphi(frac xj)sumlimits_{k=1}^{lfloor frac mj floor}varphi(kj)\ &=y*sumlimits_{j|x}varphi(frac xj)S(j,lfloor frac mj floor )\ end{aligned}]

    于是可以递归求解。

  • 相关阅读:
    java-03 方法
    cm 安装
    java-02 for循环,while循环
    java-01
    Storm入门,看这篇就够了
    Storm入门,看这篇就够了
    基于Spark的电影推荐系统(电影网站)
    基于Spark的电影推荐系统(实战简介)
    基于Spark的电影推荐系统(Scrapy爬虫)
    基于Spark的电影推荐系统(后台管理系统)
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12114622.html
Copyright © 2011-2022 走看看