news 2026/4/17 16:44:17

调手表 BFS

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
调手表 BFS

调手表

题目描述

小明买了块高端大气上档次的电子手表,他正准备调时间呢。

在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有n nn分钟。

大家都知道,手表只有一个按钮可以把当前的数加一。在调分钟的时候,如果当前显示的数是0 00,那么按一下按钮就会变成1 11,再按一次变成2 22。如果当前的数是n − 1 n-1n1,按一次后会变成0 00

作为强迫症患者,小明一定要把手表的时间调对。如果手表上的时间比当前时间多1 11,则要按n − 1 n-1n1次加一按钮才能调回正确时间。

小明想,如果手表可以再添加一个按钮,表示把当前的数加k kk该多好啊…

他想知道,如果有了这个+ k +k+k按钮,按照最优策略按键,从任意一个分钟数调到另外任意一个分钟数最多要按多少次。

注意,按+ k +k+k按钮时,如果加k kk后数字超过n − 1 n-1n1,则会对n nn取模。

比如,n = 10 , k = 6 n=10, k=6n=10,k=6的时候,假设当前时间是0 00,连按2 22+ k +k+k按钮,则调为2 22

输入描述

一行两个整数n , k n, kn,k0 < k < n ≤ 10 5 0 < k < n \leq 10^50<k<n105),意义如题。

输出描述

输出一行一个整数,表示按照最优策略按键,从一个时间调到另一个时间最多要按多少次。

输入输出样例

示例

输入

5 3

输出

2
样例解释

如果时间正确则按0 00次。否则要按的次数和操作系列之间的关系如下:

运行限制

题目分析

题目可以转化为在模 n 的环上,从 0 出发,用 +1 和 +k 两种操作,求最远能几步到达某个数

把环看成一个图,每一次调试(+1 或者 +k)代价相同,遍历图将模 n 的环看成一个有 n 个节点的图,每个节点表示一个余数 0∼n−1。

从节点 x 出发,可以走到:
( x + 1 ) m o d n (x+1)\mod n(x+1)modn
( x + k ) m o d n (x+k)\mod n(x+k)modn

每条边表示一次操作(+1 或 +k),代价均为 1

这其实是用 BFS 按层遍历图,计算最短距离

代码

#include<iostream>#include<queue>#include<cstring>usingnamespacestd;constintN=100010;intdist[N];intmain(){intn,k;cin>>n>>k;memset(dist,-1,sizeof(dist));queue<int>q;dist[0]=0;q.push(0);while(!q.empty()){intcur=q.front();q.pop();// 两种操作:+1 和 +kintnext1=(cur+1)%n;intnextk=(cur+k)%n;if(dist[next1]==-1){dist[next1]=dist[cur]+1;q.push(next1);}if(dist[nextk]==-1){dist[nextk]=dist[cur]+1;q.push(nextk);}}// 找到最大值intmaxDist=0;for(inti=0;i<n;i++){maxDist=max(maxDist,dist[i]);}cout<<maxDist<<endl;return0;}
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 16:41:44

搭建MATLAB/Simulink汽车电动助力转向(EPS)模型全解析

MATLAB/Simulink汽车电动助力转向模型EPS模型 模型包括整车二自由度模型&#xff0c;eps模型&#xff0c;上下转向柱模型&#xff0c;包括公式&#xff0c;整车参数&#xff0c;匹配计算&#xff0c;word文档&#xff0c;模型&#xff0c;使用说明 电动助力转向系统控制系统 电…

作者头像 李华
网站建设 2026/4/17 16:41:43

如何快速掌握3dsconv:任天堂3DS游戏格式转换的完整指南

如何快速掌握3dsconv&#xff1a;任天堂3DS游戏格式转换的完整指南 【免费下载链接】3dsconv Python script to convert Nintendo 3DS CCI (".cci", ".3ds") files to the CIA format 项目地址: https://gitcode.com/gh_mirrors/3d/3dsconv 想要将手…

作者头像 李华
网站建设 2026/4/17 16:40:05

KDash高级使用教程:流式日志与资源描述完整指南

KDash高级使用教程&#xff1a;流式日志与资源描述完整指南 【免费下载链接】kdash A simple and fast dashboard for Kubernetes 项目地址: https://gitcode.com/gh_mirrors/kd/kdash KDash是一款简单快速的Kubernetes仪表盘工具&#xff0c;能够帮助用户轻松管理和监控…

作者头像 李华
网站建设 2026/4/17 16:39:01

从源码到部署:libtorch与torchvision的编译实战与避坑指南

1. 环境准备与依赖管理 在开始编译libtorch和torchvision之前&#xff0c;确保你的Linux系统已经安装了必要的依赖项。我遇到过不少因为依赖缺失导致的编译失败&#xff0c;这里分享一个完整的依赖清单&#xff1a; 首先是基础编译工具链&#xff1a; sudo apt update sudo apt…

作者头像 李华
网站建设 2026/4/17 16:38:47

别再只用Excel了!用Origin玩转Piper三线图,5分钟完成水质数据可视化分析

水质分析新利器&#xff1a;Origin绘制Piper三线图的专业技巧 实验室里堆积如山的水质检测报告&#xff0c;Excel表格中密密麻麻的离子浓度数据&#xff0c;每次做分析汇报时都要花费大量时间手动计算百分比、调整图表格式——这是不少环境监测工程师的日常困扰。传统工具在处理…

作者头像 李华