ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

「JSOI2018」机器人

2022-01-15 16:02:41  阅读:201  来源: 互联网

标签:位置 frac 周期 JSOI2018 机器人 mid 对角线 alpha


在本题当中为了方便,我们将坐标范围改至 \((0 \sim n - 1, 0 \sim m - 1)\),行走即可视作任意一维在模意义下 \(+1\).

同时,注意到一个位置只能经过一次,则可以令 \(a_{x, y}\) 为 \((x, y)\) 这个位置往外走是向下还是向,方便考察。

首先考虑这个问题的方案数,此类网格图行走的问题一般需要考察对角线的特殊性质。

  • 观察 1:\(\forall (x, y)\),若 \(a_{(x - 1) \bmod n, y} \ne a_{x, (y - 1) \bmod m}\),则要么 \((x, y)\) 被经过了两次,要么没有被经过。

  • 推论 1:\(\forall a, x, y, a_{x, y} = a_{(x + a) \bmod n, (y - a) \bmod m}\)

考察推论 1 的组合表示,相当于将整个网格图分为了若干个组,每个组由若干条完整的副对角线构成,每组内 \(a\) 相同,很自然地我们可以进一步考虑每个组对角线的构成。

将网格图往左右不断复制延伸,考察一下此时 \((0, 0)\) 所在组内副对角线的在第一行的开头位置构成的集合。

不难发现即为 \(nx(x \in \mathbb{N})\),对应到原网格图内就是 \(nx \bmod m(x \in \mathbb{N})\) 的值。

根据裴蜀定理,这个值一定是 \(dx(d = (n, m), 0 \le x < \frac{m}{d})\),因此可以知道 \((0, 0)\) 所在组的对角线集合就是从 \(x + y = 0\) 开始每 \(d\) 个间距分布的对角线。

推广到所有组,发现第 \(i\) 组就是 \(x + y = i + dx(0 \le x < \frac{n + m}{d})\).

因此这个问题只需要确定 \(x + y = 0 \sim d - 1\) 这 \(d\) 条对角线上是如何走的即可确定全图是怎么走的,也即确定前 \(d\) 步是怎么走的。

考虑前 \(d\) 步怎么走是合法的,当且仅当第一次遇到走过的点在恰好走了 \(nm\) 步以后。

首先我们发现:对于某条对角线上的点 \(x + y = k\) 一定要恰好走 \(n + m(d \mid (n + m))\) 步以后才能再次回到这条对角线,在此期间,一定走了若干次完整的周期,则:

  • 观察 2:第一次走到一个重复点时一定恰好走完了若干个整周期。

  • 观察 3:同一周期内,决定第一次走到重复点时刻的与周期内走的顺序无关,只与周期内往下 / 往右走的次数有关。

假设一个周期内往下走了 \(a\) 步,则根据裴蜀定理,在第一维走回来需要 \(\frac{n}{(n, a)}d\) 步,第二维类似地需要 \(\frac{m}{(m, d - a)}d\) 步,因此第一次走回来的时刻为:\(\mathrm{lcm}\left(\frac{n}{(n, a)}, \frac{m}{(m, d - a)}\right)d\),我们需要满足:

\[\mathrm{lcm}\left(\frac{n}{(n, a)}, \frac{m}{(m, d - a)}\right)d = nm \Longleftrightarrow \mathrm{lcm}\left(\frac{n}{(n, a)}, \frac{m}{(m, d - a)}\right) = \mathrm{lcm}(n, m) \]

对此,我们考察 \(n, m\) 所包含的每个质因子 \(p\),令 \(\alpha_1 = \max_{p ^ i \mid n} i, \alpha_2 = \max_{p ^ i \mid m} i\)

  1. 若 \(\min(\alpha_1, \alpha_2) = 0\).

若 \(p \mid (n, a)\) 则 \(\alpha_1 > 0\),可知等式左侧一定比右侧少了至少一个因子 \(p\),故 \(p \nmid (n, a)\),同理 \(p \nmid (m, d - a)\).

  1. 若 \(\min(\alpha_1, \alpha_2) > 0\)

则 \(p \mid d\),若 \(p \mid (n, a)\) 则 \(p \mid a \Rightarrow p \mid (m, d - a)\) 故左侧两项均除去了至少一个 \(p\),一定比右式至少少了一个 \(p\).

同理可得 \(p \nmid (m, d - a)\)

综上,\(\forall p \mid n \lor p \mid m\) 总有 \(p \nmid (n, a), p \nmid (m, d - a)\) 故有上式成立的必要条件 \((n, a) = (m, d - a) = 1\)

而这显然也是充分条件,因此所有的方案数即:\(\sum\limits_{a} ^ d \binom{d}{a}[(n, a) = (m, d - a) = 1]\),考虑回到原问题。

首先枚举合法的 \(a\),对于每个 \((x, y)(x \le a, y \le d - a)\),其如果在第一周期走的路径内那么所有周期当中第 \(x + y + 1\) 步的位置都将随之确定,因此也可以确定这些位置当中最靠前的障碍的位置是在第几步,记作 \(w_{x, y}\).

于是有一个简单 \(\rm dp\),记 \(f_{i, j, k}\) 为第一周期当中,确定了前 \(i + j\) 步的走法,第 \(i + j\) 步在 \((i, j)\) 当前走到的所有位置中 \(w\) 的最小值为 \(k\) 的方案,转移显然,复杂度 \(\mathcal{O}(Tn ^ 5)\).

通过一定的常数优化已经可以通过了,但本题存在更优的解法。

既然是周期性移动,那么自然可以将碰到障碍的步数分解为:第几周期 + 第一周期内的第几步。

枚举最终碰到障碍步数在第 \(t\) 周期,求出 \(f_{i, j}\) 考虑完第一周期的前 \(i + j\) 步,第 \(i + j\) 步在 \((i, j)\),走到的每一个位置的 \(w\) 都至少在在第 \(t + 1\) 周期之后的方案,以及 \(g_{i, j}\) 为确定了第 \(i + j + 1 \sim d\) 步(走到 \((a, d - a)\))第 \(i + j + 1\) 前位置为 \((i, j)\),路径上的每个位置的 \(w\) 至少在第 \(t\) 周期之后的方案。

枚举在哪个位置第一次碰到障碍,利用 \(f, g\) 合并即可,复杂度 \(\mathcal{O}(Tn ^ 4)\).

标签:位置,frac,周期,JSOI2018,机器人,mid,对角线,alpha
来源: https://www.cnblogs.com/Go7338395/p/15807238.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有