sol

cuvelia

贪心的想, 我们一定是前面选一半后面选一半.

derivative

原式等价于求 ((1+zb)^n) 中常数项, 其中 (z^k=a). 直接多项式快速幂每次将 (z^k = a) 带入即可.

interval

原问题等价于给定一个区间, 求区间的最小值是否整除区间的 (gcd). 直接用倍增预处理然后二分即可.

string

考虑这个问题很像 border, 先建 AC 自动机. 考虑找出 trie 树上根到 T 的链和 fail 树上根到 S 的链的并上深度最大的节点. 在 trie 树上 dfs 然后每到一个点就在 fail 树上查一遍答案, (mathcal{O}(nlog^2n)).

two

发现 (f(x)) 是平方级别增长的, 直接暴力枚举询问左右的点在堆里弹出即可.

walk

考虑图中度数是奇数的节点的个数.

  • 为 0 : 存在一个点被所有环经过.

  • 为 2 : 存在一个度数为奇数的点被所有环经过

  • 否则 : 答案为 0

而没有度数是奇数的节点的图, 可以发现如果存在一个点被所有环经过, 那么度数最大的点一定被所有环经过.

walking

考虑枚举文本串的每一位, 考虑这一位能匹配到模式串的哪一位, 然后利用以前的数据更新即可.

原文地址:https://www.cnblogs.com/tyqtyq/p/14040490.html