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