ABC270 E~Ex

E:

当他执行了 \(m\times n\) 次操作,我们称他执行了 \(m\) 轮操作。

显然我们可以二分出最早在第几轮的时候吃掉的苹果不小于 \(k\)

时间复杂度 \(\mathcal O(n\log k)\)

Code

F:

显然可以枚举四种情况:不用机场和码头/只用机场/只用码头/机场码头都用。

如果使用机场,就建一个虚点 \(n+1\),对于每个点都连一条边 \((i,n+1,x_i)\)

如果使用码头同理,也建一个虚点 \(n+2\),对于每个点都连一条边 \((i,n+2,y_i)\)

公路的边一定要连上。

对于每种情况跑一遍 Kruskal 就好了。

Code

G:

首先 \(S=G\) 直接输出 \(0\)

\(A=0\) 时,有 \(X_i=\left\{\begin{matrix} S\ \ \ \ (i=0) \\ B\ \ \ \ (i\gt0) \end{matrix}\right.\),可以 \(\mathcal O(1)\) 计算。

\(A=1\) 时,有 \(X_i=S+Bi\bmod p\),所以 \(i\equiv \dfrac{G-S}{B}\pmod P\),也可以 \(\mathcal O(1)\) 计算。

\(A\ge2\) 时,有 \(X_i+\dfrac{B}{A-1}\equiv A(X_{i-1}+\dfrac{B}{A-1})\pmod P\),所以 \(A^i\equiv \dfrac{G+\dfrac{B}{A-1}}{S+\dfrac{B}{A-1}}\pmod P\),可以使用 BSGS 配合哈希表(这里我用了 unordered_map),可以认为是 \(\mathcal O(\sqrt P)\) 的。

Code

Ex:

假设当前的局面为 \(b_1,b_2,\cdots,b_n\),定义距离 \(k=\max(a_i-b_i)\),表示当前状态和终止状态的距离。

\(f(k)\) 表示距离为 \(k\) 的状态期望需要多少步到达终止状态,则 \(f(0)=0\),答案为 \(f(a_n)\)

假设 \(a_1\le\cdots\le a_l\lt k\le a_{l+1}\le\cdots\le a_n\),即 \(l\) 是最大的小于 \(k\)\(a\) 的位置。

那么假设下一步操作到的 \(i\) 满足 \(1\le i\le l\),那么距离会变成 \(k-1\),否则距离会变成 \(a_i\)

那么可以得到转移 \(f(k)=1+\dfrac{1}{n}(l\times f(k-1)+\sum_{i=l+1}^{n}f(a_i))\)

移项可得 \(f(k-1)=\dfrac{1}{l}(n\times f(k)-n-\sum_{i=l+1}^{n}f(a_i))\)

\(k\) 替换 \(k-1\) 可得 \(f(k)=\dfrac{1}{l}(n\times f(k+1)-n-\sum_{i=l+1}^{n}f(a_i))\),其中 \(a_l\le k\lt a_{l+1}\)

注意到此时边界为 \(f(0)=0\),答案是 \(f(a_n)\),这和转移的顺序不符合。

所以令 \(g(k)=f(a_n)-f(k)\),那么转移变为 \(g(k)=\dfrac{1}{l}(n\times g(k+1)+n-\sum_{i=l+1}^{n}g(a_i))\),边界为 \(g(a_n)=0\),答案为 \(g(0)\)

直接计算预处理逆元和前缀和优化是 \(\mathcal O(n+V)\) 的,考虑优化。

考虑对于固定的 \(l\),对于所有 \(a_l\le k\lt a_{l+1}\) 转移形式相同,所以考虑设 \(G=\dfrac{\sum_{i=l+1}^{n}g(a_i)-n}{l}\) 是定值。

那么

\[g(a_l)=\dfrac{n}{l}g(a_l+1)-G=\dfrac{n}{l}(\dfrac{n}{l}g(a_l+2)-G)-G=(\dfrac{n}{l})^2g(a_l+2)-G(1+\dfrac{n}{l})=\cdots=(\dfrac{n}{l})^{a_{l+1}-a_l}g(a_{l+1})-G(1+\dfrac{n}{l}+\cdots+(\dfrac{n}{l})^{a_{l+1}-a_l-1})=(\dfrac{n}{l})^{a_{l+1}-a_l}g(a_{l+1})-G\dfrac{(\dfrac{n}{l})^{a_{l+1}-a_l}-1}{\dfrac{n}{l}-1} \]

于是只需依次计算 \(g(a_{n-1}),\cdots,g(a_1)=g(0)\) 即可,在过程中维护 \(\sum_{i=l+1}^{n}g(i)\) 即可做到 \(\mathcal O(n\log \text{mod})\)

Code

posted @ 2022-10-20 20:49  Kobe303  阅读(22)  评论(0编辑  收藏  举报