ICode9

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

ARC127F ±AB 解题记录

2022-09-06 17:33:06  阅读:145  来源: 互联网

标签:结论 AB bmod ARC127F 解题 操作 可以 Ak leqslant


题意:

给出整数 \(V,A,B,M\),你可以进行以下四种操作若干次:

  1. \(V \to V+A\)
  2. \(V \to V+B\)
  3. \(V \to V-A\)
  4. \(V \to V-B\)

但你必须时刻保证 \(V\in[0,M]\)。

求你可以得到多少种不同的 \(V\)。

多组数据,数据组数 \(T \leqslant 10^5\)。

\(1 \leqslant A < B \leqslant M \leqslant 10^9\)

保证 \(\gcd(a,b)=1\)。


被新初二小朋友薄纱的题!说明其实是普及组 T2 难度。

首先考虑什么时候可以遍历所有元素。

实际上 \(A+B \leqslant M+1\) 就可以遍历完。这是显然的。

现在来讨论如何解决 \(A+B \geqslant M+2\) 的情况。

可以观察到的是:我们可以分别钦定只使用 \(+A/-B\),\(+B/-A\) 的操作(显然先用 \(+A\) 再用 \(-A\) 没有意义,而先 \(+A\) 再 \(+B\) 不可能),这样每个数字只有一种可能的操作。

可以发现的是:每种操作一定不会产生循环(因为 \(\gcd(a,b)=1\))。而如果这两种操作有交,那么就相当于找到了一个循环,于是这两种操作能到达的数不会相交。

现尝试解决只使用 \(+A/-B\) 的情形,我们假设在抵达一个不能操作的点 \(V'\) 前一共使用了 \(k\) 次 \(+A\) 操作,那么答案就是 \(k+\lfloor\dfrac{V+Ak}{B}\rfloor\)。

由于 \(V'\) 不能操作了,可以得到:

\[(V+Ak)\bmod B+A>m \]

现给出结论:

令 \(V_0=V\bmod B\),如果 \(V_0+A \leqslant m\),就有:

\[V_0+(Ak\bmod B) = (V+Ak)\bmod B \]

下面给出证明:

首先上述结论等价于 \(V_0+(Ak\bmod B) < B\),考虑反证:

如果 \(V_0+(Ak\bmod B) \geqslant B\),那么 \(V_0+(Ak\bmod B)-B\) 是一个可以到达的数。

由于已经钦定了最多只能使用 \(k\) 次 \(+A\),所以:

\[V_0+(Ak\bmod B)-B+A > m \]

这与 \(V_0+A \leqslant m\) 矛盾!因此结论成立。

已知了这个结论就好做了,首先特判掉 \(V_0+A > m\) 的情况,我们就有:

\(V_0+(Ak\bmod B)+A>m\),取适当的 \(L,R\),即 \(Ak \bmod B \in [L,R]\)。

这是可以使用类欧解决的经典问题:

令 \(A \to A\bmod B\),取 \(r,t\) 满足 \(B=Ar+t,t\in[0,A-1]\)。

设 \(\lfloor\dfrac{Ak}{B}\rfloor=w\),就有:

\[Ak-Arw-tw\in[L,R]\\ tw\bmod A\in[L',R'] \]

类似欧几里得算法的,复杂度为 \(\log\) 值域。可以通过此题。

标签:结论,AB,bmod,ARC127F,解题,操作,可以,Ak,leqslant
来源: https://www.cnblogs.com/havzriu/p/16662360.html

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

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

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

ICode9版权所有