首页 > 其他分享 >题解:P10198 Infinite Adventure P

题解:P10198 Infinite Adventure P

时间:2024-09-26 10:14:21浏览次数:22  
标签:log bmod 题解 最大值 路径 Delta Infinite P10198

\(\text{Link}\)

题意

给定 \(n\) 个数组 \(c_{i,0\dots t_i-1}\),其中 \(t_i\) 为 \(2\) 的幂。有 \(q\) 次询问,每次询问给出三个参数 \(x,T,\Delta\),接下来会执行 \(\Delta\) 次 \(x\gets c_{x,T\bmod t_x},T\gets T+1\),求出最终的 \(x\)。

\(n,\sum t\le 10^5\),\(q\le 5\times 10^4\)。

题解

令 \(n=\sum t\),\(v=\max\Delta\)。

从一点开始走若干步到达的点提示使用倍增

我们的状态数不能太多,于是一个想法是设 \(f_{i,j,k}\) 表示现在在点 \(i\),当前时间 \(\bmod\ t_i\) 等于 \(j\),走 \(2^k\) 步到达的点。

此时一个问题是如果跳到一个 \(t_u>t_i\) 的点 \(u\),维护的信息不足以得知当前时间 \(\bmod\ t_u\) 的值。注意到 \(t_i\) 只有 \(\log n\) 种,即我们在一条路径上最多遇到 \(\log n\) 次这种情况。于是我们将此种情况下的 \(f_{i,j,k}\) 定义为在这 \(2^k\) 步中遇到的第一个 \(t_u>t_i\) 的点 \(u\),还需再维护 \(g_{i,j,k}\) 表示在这个 \(u\) 之前已经走了几步了。

预处理与单次询问均可模拟:从高至低枚举每一位,不断跳直到该位为 \(0\),每一位至多只会跳 \(\log n\) 次。时间复杂度为 \(O(n\log n\log^2v+q\log n\log v)\),无法通过。

考虑复杂度瓶颈为预处理部分,我们在特殊情况中经过了形如 \(i\to u\to v\) 且 \(t_u<t_v<t_i\) 这样的路径,这造成了很大的复杂度开销,我们希望每一次跳到的点 \(u\) 对应的 \(t_u\) 均为路径上的前缀最大值,这样一条任意长的路径也只需要跳 \(\log n+\log v\) 次即可跳完。

考虑令 \(f_{i,j,k}\) 为在时间为 \(j\pmod{t_i}\) 时从点 \(i\) 开始不断走直到经过了 \(2^k\) 个使得 \(t_u=t_i\) 的点 \(u\) 或到达一个使得 \(t_u>t_i\) 的点 \(u\),此时到达的点。相应地有 \(g_{i,j,k}\) 表示这条路径的长度。

预处理时先从小到大枚举 \(v\),对所有 \(t_i=2^v\) 的 \(i\) 求出所有 \(f_{i,j,k}\)。重点为求出 \(f_{i,j,0}\),从 \(c_{i,j}\) 开始不断向其后第一个 \(t\) 比自身大的跳即可。

询问时先不断向大跳直到达到路径上 \(t\) 的最大值,此后跳过所有 \(t\) 值为最大值的点即可减小最大值,显然我们只能减少 \(\log n\) 次。

总时间复杂度 \(O(n\log v+q\log n\log v)\),可以通过。

标签:log,bmod,题解,最大值,路径,Delta,Infinite,P10198
From: https://www.cnblogs.com/cyffff/p/18432912

相关文章

  • 题解:P10998 Tuple+
    \(\text{Link}\)有意思,记录一下。题意给出\(m\)个互不相同的无序三元组\((u,v,w)\),求有多少无序四元组\((a,b,c,d)\)使得三元组\((a,b,c),(a,b,d),(a,c,d),(b,c,d)\)均存在。\(m\le3\times10^5\)。Bonus:\(m\le2\times10^6\)。题解回忆无向图三元环计数的做法,使......
  • 题解:CF1799F Halve or Subtract
    \(\text{Link}\)介绍一下一种高维wqs的方法。此方法来自@YeahPotato的专栏严谨的WQS二分方法。题意给定一个长为\(n\)的序列\(v_{1\dotsn}\),三个常数\(d,a,b\)。你可以执行若干次以下两种操作:选择\(1\lei\len\),令\(v_i\gets\lceil\frac{v_i}{2}\rceil\)。......
  • [GYM103119K][2020 ICPC Asia Macau] Candy Ads 题解
    题意简述有\(n\)个广告,每个广告在一个时间段内占据二维平面的矩形,\(m\)个约束表示两个广告至少有一个要被选择,选择若干广告,满足所有约束且同时刻不能有重叠的广告。Kosaraju算法流程在正图上跑一遍DFS,给每个位置打上时间戳从时间戳大到小枚举点,在反图上跑DFS,这个时候对......
  • [ARC062F] AtCoDeerくんとグラフ色塗り 题解
    思路对于一个点双,我们可以发现:假如它是一个简单环,那么它只能旋转这一个环,我们可以使用polya定理计算。假如它是多个环的组成,那么它的颜色可以随意调动,任何的情况都可以得到,那么假如说有\(m\)条边,方案数则为\(\binom{m+k-1}{k-1}\),我们只考虑每一种颜色的出现次数。对于......