唐山一中暑假集训 IV

Day 18

  1. P2322 [HNOI2006] 最短母串问题
    我们考虑建立 trie 图(其实也是 AC 自动机),然后我们从第一位开始进行 BFS,每次遍历到一个点 \((u, state)\)\(u\) 表示节点,而 \(state\) 表示状态。对于这 \(n\) 个字符串进行状态压缩,从右向左数第 \(i\) 个表示 \(2^{i - 1}\)。根据 AC 自动机的 fail 数组性质,我们很容易发现这是和题目要求很相近的。所以我们这么进行 BFS 即可。

  2. P4248 [AHOI2013] 差异
    我们首先来转化一下式子。
    \(原式 = \sum_{1 \le i \le n - 1} \sum_{i + 1 \le j \le n} i + j - 2 \times \sum_{1 \le i < j \le n} \textup{lcp} (s_i, s_j) = \frac{n \times (n - 1) \times (n + 1)}{2} - 2 \times \sum_{1 \le i < j \le n} \textup{lcp} (s_i, s_j)\)
    注意到后面的这个东西其实是可以使用 SA 后缀数组和 height 数组求解。
    然后再套一个单调栈即可。

Day 20

  1. P2520 [HAOI2011] 向量
    我们注意到原式等价于 \(n1 \times a + m1 \times b = x\)\(n2 \times a + m2 \times b = y\)
    但是这两个式子有解很好判断,但是能不能同时有解呢?
    我们考虑把两个式子加在一起,考虑改写成一种等价格式:\(n3 \times (a + b) + m3 \times (a - b) = x + y\)
    再使用裴蜀定理判定即可。

  2. P1516 青蛙的约会
    我们令 \(a = n - m\)\(b = L\)\(c = x - y\),原式就是求出 \(ax' + by' = c\) 的整数解。
    然后我们使用 exgcd 求解即可。

  3. P3934 [Ynoi Easy Round 2016] 炸脖龙 I
    一看就是 Ynoi 好题。
    首先,我们根据扩展欧拉定理可以知道,注意到 \(\phi(\phi(n...))\) 其实有很多层的,复杂度是 \(\log\) 级别的。
    所以这就是一个树状数组好题了,对于操作一直接使用树状数组维护,第二个暴力做即可。复杂度 \(O(n \log n)\)

Day 21

莫比乌斯反演

首先定义什么事 \(\mu(n)\)
如果 \(n = 1\),那么 \(\mu(n) = 1\);如果 \(n\) 含有平方因子,那么 \(\mu(n) = 0\);否则设 \(n = p_1 \times p_2 \times ... \times p_k\),则 \(\mu(n) = (-1)^k\)
接下来我们定义单位函数 \(\varepsilon(n) = [n = 1]\)\(\textup{id(n)} = n\)\(1(n) = 1\)
接下来介绍一下狄利克雷卷积。
我们定义 \((f * g)(n) = \sum_{d | n} f(d) \times g(\frac{n}{d})\)

  1. P3455 [POI 2007] ZAP-Queries
    \(n = \frac{a}{k}\)\(m = \frac{b}{k}\)

\[原式 = \sum_{1 \le x \le a} \sum_{1 \le y \le b} [\textup{gcd(x, y)}] \]

\[= \sum_{1 \le x \le \frac{a}{k}} \sum_{1 \le y \frac{b}{k}} [\textup{gcd(x, y) = 1}] \]

\[= \sum_{1 \le x \le \frac{a}{k}} \sum_{1 \le y \frac{b}{k}} \sum_{d | \textup{gcd(x, y)}} \mu(d) \]

\[= \sum_{d} \mu(d) \sum_{1 \le x \le n, d | x} \sum_{1 \le y \le m, d | m} 1 \]

\[= \sum_{d} \mu(d) \sum_{1 \le x \le \frac{n}{d}} \sum_{1 \le y \le \frac{m}{d}} 1 \]

\[= \sum_{d} \mu(d) \times \frac{n}{d} \times \frac{m}{d} \]

然后可以进行数论分块和前缀和预处理即可。

posted @ 2026-08-14 15:41  Bob1108  阅读(6)  评论(0)    收藏  举报