Solution -「LOCAL」过河
一段坐标轴 ,从 出发,每次可以 或 ,但不能越出 。求可达的整点数。
,。
考场上玄学操作,天知道为什么兔子签到的姿势如此诡异。
显然先约 。我们从 次开始枚举 的次数,设当前枚举到 ,若 ,可以通过少一次 来完成,调出循环;否则,钦定 次 时,可达的整点一定是一个模 剩余类中连续的区间,即 。我们只需要维护出 ,累加 就能得到答案。考虑多一次 对 的影响,例如当 :
首先左移 位,类似位运算,出界的低位被销毁:
这个时候需要判断是否存在 (可能 是 的若干倍,不仅是一个 可以拉回来的),若不存在,跳出。然后考虑更新 ,它还能往后 ,一直顶满上限:
于是模拟一下就解决了。复杂度 。
可以打表证明当 ,答案为 ;否则暴力 DFS……
兔子可能是个傻瓜,嗯。
// case 1
#include <cstdio>
typedef long long LL;
inline char fgc () {
static char buf[1 << 17], *p = buf, *q = buf;
return p == q && ( q = buf + fread ( p = buf, 1, 1 << 17, stdin ), p == q ) ? EOF : *p ++;
}
inline LL rint () {
LL x = 0; char s = fgc ();
for ( ; s < '0' || '9' < s; s = fgc () );
for ( ; '0' <= s && s <= '9'; s = fgc () ) x = x * 10 + ( s ^ '0' );
return x;
}
inline void wint ( const LL x ) {
if ( 9 < x ) wint ( x / 10 );
putchar ( x % 10 ^ '0' );
}
LL L, a, b;
bool vis[100005];
inline LL gcd ( const LL a, const LL b ) {
return b ? gcd ( b, a % b ) : a;
}
int main () {
freopen ( "river.in", "r", stdin );
freopen ( "river.out", "w", stdout );
L = rint (), a = rint (), b = rint ();
int d = gcd ( a, b );
a /= d, b /= d, L /= d;
if ( a == 1 ) return wint ( L + 1 ), putchar ( '\n' ), 0;
if ( b == 1 ) return wint ( a > L ? 1 : L + 1 ), putchar ( '\n' ), 0;
LL ans = L / a + 1, l = 0, r = a * ( L / a );
vis[0] = true;
for ( int useb = 1; !vis[1ll * useb * b % a]; ++ useb ) {
vis[useb * b % a] = true;
l -= b;
if ( l < 0 ) l += a * ( ( -l - 1 ) / a + 1 );
if ( l + b > r ) break;
r -= b;
if ( L - r >= a ) r += a * ( ( L - r ) / a );
if ( l > r ) break;
ans += ( r - l ) / a + 1;
}
wint ( ans ), putchar ( '\n' );
return 0;
}
还陷在省选难度签不动道的怪圈里……这道题算上拍浪费了差不多 。
麻烦兔子醒醒啊!
分类:
C.特殊题目 / 性质/结论
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现