zoukankan      html  css  js  c++  java
  • 字符串专题测试1 题解

    A. 阿尔法

    显然只要对位合并,最后查询不同的集合数就好了。

    似乎听过一个叫倍增并查集的东西,然而考场上没有$yy$出来。

    $f_{k,i}$表示点$i$以及$i$往后数$2^k$个元素共同被合并的祖先。

    对于合并操作,直接用ST表的思路合并即可。

    考虑最终的下传操作:

    枚举倍增的次幂数,设$i$向后$2^k$个元素的祖先为$f$。

    因为并查集美妙的性质,在$2^{k-1}$个元素意义下只要分别合并$i$与$f$,$i+2^{k-1}$与$f+2^{k-1}$就好了。

    B. 狗

    题意不清,就没什么好说的。

    C. 集合

    $n$个不同的数划分到若干个集合的方案数。

    一行第二类斯特林数的和,即贝尔数。

    有递推公式$B_{n+1}=sum limits_{i=0}^n inom{n}{i}B_i$。

    即钦定最后一个元素划分在最后一个集合中,选出一些元素划分为若干个集合,剩余的元素与最后一个元素划分在一起。

    容易发现这个玩意是卷积式,分治FFT就好了,当然用生成函数搞一搞之后多项式求逆也是可以的,当然直接用二项式反演求一行斯特林数搞也是可以的。

  • 相关阅读:
    国际区号选取组件
    python和js执行字符串函数
    mysql存储过程循环遍历某个表以及事件
    mysql创建远程用户
    ubuntu改文件夹权限
    mysql最大连接数
    MSYS
    Eclipse Java 可视化插件
    你不知道的继承
    vue3.x
  • 原文地址:https://www.cnblogs.com/skyh/p/12134248.html
Copyright © 2011-2022 走看看