<< Math >>

CF1845E Boxes and Balls

有一个观察是球不能穿过对方,那么初始的第 \(i\) 个球 最后结束时也得是第 \(i\) 个。

设初始每个球位置 \(a_1,a_2\dots a_t\),最终位置 \(b_1,b_2\dots,b_t\),那么最小移动步数 \(S=\sum|a_i-b_i|\)

\(S\) 应满足 \(S\le k\)\(S\equiv k \pmod{2}\)(因为可以对一个球反复横跳)。

考虑 \(dp[i][j][s]\) 表示前 \(i\) 个位置放了 \(j\) 个球,目前的最小移动步数和为 \(s\)\(i\) 这一维可以滚动掉,空间没问题了,时间 \(O(n^2k)\),有点难蚌。

可以发现一个事情,如果前 \(i\) 个位置原来有 \(c_i\) 个球,最终有 \(y\) 个,那么至少的移动步数为 \((c_i-y)^2\)。比如 \(y<c_i\) 的时候,最后 \(c_i-y\) 个球排在区间的最后,然后一个一个搬出去,每个至少搬 \(c_i-y\) 步,总步数就是 \((c_i-y)^2\)

所以对任意 \(dp[i][j][s]\),都应该满足 \((c_i-j)^2\le k\),那么 \(|c_i-j|\le \sqrt{k}\)

也就是说,只有 \(j\in[c_i-\sqrt{k},c_i+\sqrt{k}]\)\(j\) 才可能成立。

于是 \(j\) 这一维可以只用枚举 \([c_i-\sqrt{k},c_i+\sqrt{k}]\) 了,复杂度降至 \(O(nk\sqrt{k})\)

CF1842G Tenzing and Random Operations

看错题了/qd

\zrdz/组合意义\zrdz/

假设位置 \(0\)\(1\) 初始有 \(a_1\) 条道路,\(1\)\(2\) 初始有 \(a_2\) 条道路,以此类推,那么 \(\prod a_i\) 就是从 \(0\)\(n\) 的路径条数。

修改操作相当于在一个位置放一个工具,工具之间两两不同,走到这个位置时会捡起所有工具,然后走的时候可以选择不用或用一个工具增加 \(v\) 条路并走这 \(v\) 条路中的一条。

发现用过的不同工具数 \(\le n\),记录 \(dp[i][j]\) 为到达 \(i\) 时,已经用过 \(j\) 个工具的方案数。

那么:

  • 不用工具:\(dp[i][j]+=dp[i-1][j]\times a_i\)

  • 用一个用过的工具:\(dp[i][j]+=dp[i-1][j]\times j\times v\),这个 \(j\) 是因为用过的工具两两不同。

  • 用一个没用过的工具:\(dp[i][j]+=dp[i-1][j-1]\times (m-j+1)\times i\times v\),分别表示用剩下的哪一个、放在 \(1\)\(i\) 哪个位置、\(v\) 条路径。

最后答案 \(=\dfrac{1}{n^m}\sum_{i=0}^ndp[n][i]\times n^{m-i}\)。这个 \(n^{m-i}\) 是因为还有 \(m-i\) 个工具没放,要算上这些的贡献。

CF1838E Count Supersequences

考虑每个 \(a_i\) 匹配最前面一个能匹配的 \(b_i\),设 \(a_i\) 匹配 \(b_{p_i}\),那么应该满足 \(\forall j\in [p_{i-1}+1,p_{i}-1],b_j\not = a_i\),那么这些位置应该都只有 \(k-1\) 种选择。

\(p_n\) 后面的数就可以随便填了,每个位置 \(k\) 种选择。

枚举 \(p_n\) 可以得到一个正着做的式子 \(ans=\sum_{i=n}^m\binom{i-1}{n-1}(k-1)^{i-n}k^{m-i}\),可惜优化空间太小了,可做但是困难。

考虑容斥,计算不满足条件的序列数量。枚举最多匹配 \(t\in[0,n-1]\) 位,那么\(p_t\) 后面所有位置不能是 \(a_{t+1}\),那么除了已经确定的确定的位置都只能填 \(k-1\) 种,那么方案数就是 \(\binom{m}{t}(k-1)^{m-t}\)

于是 \(ans=k^m-\sum_{t=0}^{n-1}\binom{m}{t}(k-1)^{m-t}\)

CF1834E MEX of LCM

一个显然的答案上界是 \(pr_{n+1}\),即第 \(n+1\) 个质数,因为每个质数必然单独出现。设这个上界是 \(V\approx4.5\times 10^6\)

考虑固定一个左端点 \(l\),那么所有以 \(l\) 为左端点的区间中 \(\text{lcm}\) 的取值只有 \(\log V\) 种,因为右端点向右扩展时,若区间 \(\text{lcm}\) 变化,则至少乘以 2。

基于这个,我们可以直接无脑枚举左端点然后二分变化位置,但是有更简单做法。

设初始 \(l=n\),不断左移,记录一个 set(自动去重)记录以当前的 \(l\) 为左端点的所有区间的 \(\text{lcm}\)。当我们左移 \(l\)\(l-1\) 时,我们取出 set 里的每个元素和 \(a_{l-1}\)\(\text{lcm}\)。只是因为前面所有区间都以 \(l\) 为左端点,而对于 \(l-1\),除了 \(a_{l-1}\) 外,所有值都可看做一个以 \(l\) 为左端点的区间向左扩展一个位置。

每次把 set 里所有东西丢到一个桶里就行了。

复杂度有保证,因为任意时刻 set 中元素数量不会超过 \(\log V\)

CF1830C Hyperregular Bracket Strings

将左括号看做+1,右括号看成-1划出一条折线,那么合法括号串应该是左端点与右端点值一样并且中间所有值都不小于左端点值。

这样分析可得相交且不包含的区间 \([l1,r1],[l2,r2](l1<l2\le r1<r2)\) 的限制度等价于 \([l1,l2-1],[l2,r1],[r1+1,r2]\) 的限制,而包含区间没有影响。

考虑最终答案为将这些区间按照上述规则劈开后按包含关系建树,然后每个节点除去儿子后位置的数量除 2 的卡特兰乘起来。

但是建树困难。发现一个神奇的东西: 设 \(S_i\) 为 覆盖了 \(i\) 的线段集合,那么 \(S_i\) 相同的位置最终会被放到一起算。多画图感性理解

于是对覆盖进行 hash,最终 hash 值相同的位置应该一起算。

CF1801F Another n-dimensional chocolate bar

首先无脑 \(dp[i][j]\) 表示前 \(i\) 个位置填完了,后面的 \(\prod b_i\ge j\) 时的 \(\max\prod\lfloor\dfrac{a_i}{b_i}\rfloor\times \dfrac{1}{a_i}\)

枚举 \(b_i\),可得转移 \(dp[i-1][j]\times \lfloor\dfrac{a_i}{b_i}\rfloor\times \dfrac{1}{a_i} \to dp[i][\lceil\dfrac{j}{b_i}\rceil]\)

初始 \(dp[0][k]=1\)

优化。

由于 \(\lceil\dfrac{a}{b}\rceil=\lfloor\dfrac{a-1}{b}\rfloor+1,\left\lceil\dfrac{\lceil\dfrac{a}{b}\rceil}{c}\right\rceil=\lfloor\dfrac{a-1}{bc}\rfloor+1\),我们可以发现所有的 \(j\) 应该都是 \(\lfloor\dfrac{k-1}{x}\rfloor+1\)。根据经典结论,这样的取值最多 \(\sqrt{k-1}\) 种。因此状态数降到了 \(O(n\sqrt k)\)

优化转移。显然在 \(\lceil\dfrac{j}{b_i}\rceil=\lfloor\dfrac{j-1}{b_i}\rfloor+1\) 不变时,我们尽量选小的 \(b_i\)

因此 \(b\) 的取值是 \(O(\sqrt{j})\) 种。

复杂度不好分析,大概类似杜教筛不带预处理的复杂度,是 \(O(k^{0.75})\)。外面做 \(n\) 次就是 \(O(nk^{0.75})\)

posted @ 2023-07-13 22:00  jimmyywang  阅读(51)  评论(0)    收藏  举报