小明买了块高端大气上档次的电子手表,他正准备调时间呢。
在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟。
大家都知道,手表只有一个按钮可以把当前的数加一。在调分钟的时候,如果当前显示的数是 0 ,那么按一下按钮就会变成 1,再按一次变成 2 。如果当前的数是 n - 1,按一次后会变成 0 。
作为强迫症患者,小明一定要把手表的时间调对。如果手表上的时间比当前时间多1,则要按 n - 1 次加一按钮才能调回正确时间。
小明想,如果手表可以再添加一个按钮,表示把当前的数加 k 该多好啊⋯⋯
他想知道,如果有了这个 +k 按钮,按照最优策略按键,从任意一个分钟数调到另外任意一个分钟数最多要按多少次。
注意,按 +k 按钮时,如果加k后数字超过n-1,则会对n取模。
比如,n=10, k=6 的时候,假设当前时间是0,连按2次 +k 按钮,则调为2。

题解:BFS具有最短路性质,所谓的最优策略其实就是一个BFS的过程,当每个数第一次出现的时候的操作次数即是最优操作次数。

AC代码:

#include <iostream>
#include <cstring>
#include <queue>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn=1e6+5;
int n,k,vis[maxn],num[maxn];
struct node {int v,num;node(int a,int b) {v=a;num=b;}
} ;
void bfs(){queue<node>q;q.push(node(0,0));while(q.size()){node u=q.front();q.pop();if(vis[u.v])continue;vis[u.v]=1;num[u.v]=u.num;q.push(node((u.v+1)%n,u.num+1));q.push(node((u.v+k)%n,u.num+1));     }
}
main(){cin>>n>>k;bfs();sort(num,num+n);cout<<num[n-1]<<endl;
}

题目 2291: [蓝桥杯][2018年第九届真题]调手表(BFS)相关推荐

  1. [蓝桥杯][2018年第九届真题]调手表-bfs

    小明买了块高端大气上档次的电子手表,他正准备调时间呢.在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟.大家都知道,手表只有一个按钮可以把当前的数加一.在调分钟的时候, ...

  2. [蓝桥杯][2018年第九届真题]调手表(BFS)

    题目描述 小明买了块高端大气上档次的电子手表,他正准备调时间呢. 在 M78 星云,时间的计量单位和地球上不同,M78 星云的一个小时有 n 分钟. 大家都知道,手表只有一个按钮可以把当前的数加一.在 ...

  3. 题目 2285: [蓝桥杯][2018年第九届真题]螺旋折线(数论+思维)

    题目: 题目描述 如图所示的螺旋折线经过平面上所有整点恰好一次. 对于整点(X, Y),我们定义它到原点的距离dis(X, Y)是从原点到(X, Y)的螺旋折线段的长度. 例如dis(0, 1)=3, ...

  4. 题目 2194: 蓝桥杯2018年第九届真题-递增三元组

    答题记录: 第一次做:答案错误  审题出错 第二次做:时间超限,用了3 个for循环 做了13'分钟 代码出错: for循环中循环变量写错 第三次做:答案正确,用哈希表化简时间复杂度,(减少一个for ...

  5. C++ 字符串流stringstream(附蓝桥杯2018年第九届真题缩位求和题解)

    一.stringstream介绍 stringstream是 C++ 提供的一个字符串流(stream),,必须包含其头文件: #include <sstream> < sstrea ...

  6. [蓝桥杯][2018年第九届真题]小朋友崇拜圈、耐摔指数、堆的计数、缩位求和、约瑟夫环

    个人题解链接,蓝桥杯历届试题,正在更新中~ 文章目录 个人题解链接,蓝桥杯历届试题,正在更新中~ 小朋友崇拜圈 耐摔指数 堆的计数 缩位求和 约瑟夫环 小朋友崇拜圈 题目描述 班里N个小朋友,每个人都 ...

  7. [蓝桥杯][2018年第九届真题]整理玩具(树状数组)

    题目描述 小明有一套玩具,一共包含NxM个部件.这些部件摆放在一个包含NxM个小格子的玩具盒中,每个小格子中恰好摆放一个部件. 每一个部件上标记有一个0~9的整数,有可能有多个部件标记相同的整数. 小 ...

  8. [蓝桥杯][2018年第九届真题]迷宫与陷阱(三维数组标记BFS)

    题目描述 小明在玩一款迷宫游戏,在游戏中他要控制自己的角色离开一间由NxN个格子组成的2D迷宫. 小明的起始位置在左上角,他需要到达右下角的格子才能离开迷宫. 每一步,他可以移动到上下左右相邻的格子中 ...

  9. [蓝桥杯][2018年第九届真题]版本分支(离线LCA模板)

    题目描述 小明负责维护公司一个奇怪的项目.这个项目的代码一直在不断分支(branch)但是从未发生过合并(merge). 现在这个项目的代码一共有N个版本,编号1~N,其中1号版本是最初的版本. 除了 ...

  10. [蓝桥杯][2018年第九届真题]日志统计(树状数组)

    题目描述 小明维护着一个程序员论坛.现在他收集了一份"点赞"日志,日志共有N行.其中每一行的格式是: ts id 表示在ts时刻编号id的帖子收到一个"赞". ...

最新文章

  1. C++实现CString和string的互相转换
  2. 三、Ubuntu Server上安装Matlab,利用X11和Putty输出窗口到Windows桌面(补充内容)
  3. R学习_multitaper包解析2:子函数spec.mtm.dpss,dpssHelper
  4. IM推送保障及网络优化详解(二):如何做长连接加推送组合方案
  5. Settype COM_TA_MANUFAC - mapping between ERP Equipment and CRM Individual Object
  6. MySQL深潜|剖析Performance Schema内存管理
  7. selenium +chrome headless Adhoc模式渲染网页
  8. 屏幕强大!一加7 Pro海外版发布:2K分辨率 90Hz刷新率
  9. 目标检测——如何让模型过拟合
  10. 3-26 C++ 学习
  11. HashMap,TreeMap,LinkedHashMap学习
  12. 中文转换为拼音插件guiHz2Py
  13. 驱动设计思想(机制、策略、分离、分层)
  14. 杰里混响调MIC增益和深度【篇】
  15. 如何做一个员工管理系统
  16. uni的numberbox怎么用_模拟器最强BIOS篇,如何使用uni-bios
  17. 深度学习如何应用在广告、推荐及搜索业务?阿里妈妈实践案例解读
  18. 使用 Live Transcribe 进行实时连续转录
  19. 易经与计算机科学,人与计算机的思维模式区别,以及计算机的易经八卦运算
  20. vue发布之后会出现白屏现象主要几种原因和解决办法

热门文章

  1. 【项目管理/PMP/PMBOK第六版/新考纲】纯干货!商业论证/效益管理计划/项目运行环境/组织过程资产/环境事业因素/组织系统,系列笔记建议收藏!
  2. pandas-task08-文本数据.md
  3. 开题报告中的研究现状怎么写?
  4. LOJ#2134 小园丁与老司机
  5. node.js使用 nodemailer 库发送邮件以及EREFUSED问题的出现
  6. php百度蜘蛛劫持,PHP模拟百度蜘蛛,伪造IP爬行网站,附源代码
  7. 纯前端word导出echarts图表
  8. 阿里巴巴国际站统计国家来源小方法
  9. 计算机文件夹加密文件,如何加密计算机文件夹4种加密文件夹的方法
  10. python读取桌面上的文件夹怎么加密_python给文件夹加密 怎么样给python文件加密...