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}(n\log^2n)\).

two

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

walk

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

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

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

  • 否则 : 答案为 0

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

walking

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

posted @ 2020-11-26 09:07  tyqtyq~!  阅读(136)  评论(1编辑  收藏  举报