zoukankan      html  css  js  c++  java
  • 省选模拟45

    A.

      考虑给整个矩阵按照每行为一个字符串建出一颗trie树,然后给每个节点存一下出现在第几行就可以统计答案。

      考虑如何得到整个矩阵的答案,那么接下来要做的就是将trie的第一层节点删掉,这个东西可以简单地用trie树合并实现,在合并的过程中维护答案即可。

      用splay启发式合并的复杂度似乎更加优秀,但是并不知道为什么。

    B.

      看到与运算就能想到按位处理,然后发现对于一个端点来说不同的结果只有log种。

      于是维护这log个位置就行了,然后将询问离线,在右端点处处理所有的询问。

      然后就对应了区间修改,区间查询,直接维护就行。

    C.

      考虑枚举最大值出现的位置,然后只要得到从前向后出现$a-1$个特殊点,后面出现$b-1$的方案数就可以统计答案。

      然后发现这个东西可以简单dp,于是将状态转移方程写出来之后发现就是第一类斯特林数。

      于是答案就是$sumlimits_{i-1}^n s(i-1,a-1) s(n-i,b-1) C(n-1,a-1)$。

      考虑这个东西的实际含义,就是一共选出来$a+b-2$,并且前$a-1$个环和后$b-1$个环不等价的方案数。

      所以答案就是$s(n-1,a+b-2)*C(a+b-2,a-1)$。

      然后只要求出来一行斯特林数即可,直接倍增就行了。

  • 相关阅读:
    bzoj3473 字符串
    洛谷P4070 生成魔咒
    洛谷P3975 弦论
    AT1219 歴史の研究
    课上讲的几个新的技巧
    索引与视图(转载)
    oracle中的分支与循环语句
    Oracle to_date()函数的用法《转载》
    自定义函数的存储过程的区别
    UNION 和 UNION ALL 操作符
  • 原文地址:https://www.cnblogs.com/hzoi-cbx/p/12494562.html
Copyright © 2011-2022 走看看