2025.4.17 CWOI 模拟赛 T1T2

T1 稻田灌溉

一眼 DP,看到 \(100\) 的数据想区间 DP,但是不是。

转换题意,转化为画 \(m\) 个括号,对于所有 \(i\),保证被括起来的次数属于 \([a _ i,b _ i]\),求方案数。

\(dp _ {i,j,k}\) 表示考虑前 \(i\) 个位置,有 \(j\) 个没被匹配,匹配过了 \(k\) 个的方案数,则转移就去枚举下一个位置放多少个左端点,放多少个右端点,条件是 \(a _ {i + 1} \le l + r \le b _ {i + 1}\)

因为每个区间不同,所以有个组合数系数 $C _ {m - j - k} ^ l $ 表示从剩下的选 \(l\) 个,右端点需要对应匹配,所以有 \(C _ {j + l} ^ r\) 表示选前面中的 \(r\) 个进行匹配。

四个变量都需要枚举,显然需要优化。我们发现,左右端点可以分别计算,所以可以把 \(dp\) 只拿来转移右端点,开一个 \(f\) 去转移左端点。

所以最后的转移方程如下:

\[f _ {i + 1,j + l,k} \gets \sum _ {l = a _ {i + 1} - j} ^ { l \le b _ {i - j} \wedge j + k + l \le m } dp _ {i,j,k} \times C _ {m - j - k} ^ {l} \\ dp _ {i + 1,j - l,k + l} \gets \sum _ {r = 0} ^ j f _ {i + 1,j,k} \times C _ j ^ r \]

还有为什么开 5s 啊,只跑了 2s 欸。

T2 最长模区间

唐人 *1800,没想到转化打随机化骗的分。

什么 バカ 优化,不需要

首先,我们可以对 \(a\) 进行差分,设为 \(b\)。因为 \(a \bmod p \Leftrightarrow a - p \lfloor \frac{a}{p} \rfloor\),所以一段同余,等同于该段的 \(b\)\(\gcd\) 不为 \(1\)。因为对于一个 \(r\),区间 \([l,r]\)\(l\) 减小时不增,所以可以双指针来找。

\(r\) 向后可以快速更新,但是 \(l\) 向后不好撤销操作,所以可以维护一个区间的 \(\gcd\),可以用 lxl ST 表 + 手写 Binary GCD。

有一点卡常,但是 \(609\) ms 创过去了。

posted @ 2025-04-20 21:02  xguagua_233  阅读(34)  评论(0)    收藏  举报