标题:调手表

小明买了块高端大气上档次的电子手表,他正准备调时间呢。
在 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。

「输入格式」
一行两个整数 n, k ,意义如题。

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

「样例输入」
5 3

「样例输出」
2

「样例解释」
如果时间正确则按0次。否则要按的次数和操作系列之间的关系如下:
1:+1
2:+1, +1
3:+3
4:+3, +1

「数据范围」
对于 30% 的数据 0 < k < n <= 5
对于 60% 的数据 0 < k < n <= 100
对于 100% 的数据 0 < k < n <= 100000

#include<bits/stdc++.h>
using namespace std;
#define MAX 100010
int vis[MAX],num[MAX];
int k,n;
int ans,to;struct node
{int cost;int time;node(int xx,int yy){//此处的time功能类似于下面的变量to,但不可替代cost=xx;time=yy;}
};queue <node>  q;
void bfs(int x,int y)
{num[0]=0;vis[0]=1;q.push(node(0,0));while(!q.empty()){node now =q.front();q.pop();to=(now.time+1)%n;if(!vis[to]){vis[to]=1;num[to]=now.cost+1;q.push(node(now.cost+1,to));}to=(now.time+k)%n;if(!vis[to]){vis[to]=1;num[to]=now.cost+1;q.push(node(now.cost+1,to));}}}int main()
{memset(vis,0,sizeof(vis));scanf("%d%d",&n,&k);bfs(0,0);sort(num,num+n);printf("%d",num[n-1]);
}

2018第九届蓝桥杯B组决赛题解第四题 调手表(BFS)相关推荐

  1. 2018第九届蓝桥杯B组决赛题解第六题 矩阵求和

    标题:矩阵求和 经过重重笔试面试的考验,小明成功进入 Macrohard 公司工作. 今天小明的任务是填满这么一张表: 表有 n 行 n 列,行和列的编号都从1算起. 其中第 i 行第 j 个元素的值 ...

  2. 2018第九届蓝桥杯B组决赛题解第一题 换零钞

    标题:换零钞 x星球的钞票的面额只有:100元,5元,2元,1元,共4种. 小明去x星旅游,他手里只有2张100元的x星币,太不方便,恰好路过x星银行就去换零钱. 小明有点强迫症,他坚持要求200元换 ...

  3. 2018第九届蓝桥杯B组决赛-搭积木

    标题:搭积木 小明对搭积木非常感兴趣.他的积木都是同样大小的正立方体. 在搭积木时,小明选取 m 块积木作为地基,将他们在桌子上一字排开,中间不留空隙,并称其为第0层. 随后,小明可以在上面摆放第1层 ...

  4. 2018第九届蓝桥杯JavaB组省赛真题及详解

    2018第九届蓝桥杯JavaB组省赛真题及详解 第一题:第几天 第二题:方格计数 第三题:复数幂 第四题:测试次数 第五题:快速排序 第六题:递增三元组 第七题:螺旋折线 第八题:日志统计 第九题:全 ...

  5. 2019第十届蓝桥杯A组决赛(国赛)A题(三升序列)

    2019第十届蓝桥杯A组决赛(国赛)A题(三升序列) 输入: VLPWJVVNNZSWFGHSFRBCOIJTPYNEURPIGKQGPSXUGNELGRVZAG SDLLOVGRTWEYZKKXNK ...

  6. 2018第九届蓝桥杯JavaA组省赛真题详解

    目录 第一题:分数 第二题:星期一 第三题:复数幂 第四题:方格计数 第五题:打印图形 第六题:航班时间 第七题:三体攻击 第八题:全球变暖 第九题:倍数问题 第十题:付账问题 题解待更新 第一题:分 ...

  7. 2018 第九届 蓝桥杯 JavaB组 摔手机(动态规划解决)

    x星球的居民脾气不太好,但好在他们生气的时候唯一的异常举动是:摔手机. 各大厂商也就纷纷推出各种耐摔型手机.x星球的质监局规定了手机必须经过耐摔测试,并且评定出一个耐摔指数来, 之后才允许上市流通. ...

  8. 2018年第九届蓝桥杯 JavaB组省赛 刷题思路及答案

    前言 本人是二本院校大二的计算机系学生,已经报名了下一届的蓝桥杯省赛,整个寒假学习了很多算法知识,我是看<算法很美>这个课程学习算法的,一套学习下来确实受益匪浅,视频在b站上面都有. 此前 ...

  9. 2018第九届蓝桥杯大赛软件类B组C/C++省赛题解

    2018第九届蓝桥杯大赛软件类B组C/C++省赛目录 试题 A:第几天(结果填空) 试题 B:明码(结果填空) 试题 C:乘积尾0(结果填空) 试题 D:测试次数(结果填空) 试题 E:快速排序(结果 ...

  10. 第九届蓝桥杯JavaA组(2018年)省赛真题解析

    第九届蓝桥杯JavaA组(2018年)省赛真题解析 1.分数 1/1+1/2+1/4+1/8+1/16+- 每项是前一项的一半,如果一共有20项,求这个和是多少 结果用分数表示,类似: 3/2,当然这 ...

最新文章

  1. facerec = dlib.face_recognition_model_v1()面部识别器用法
  2. python学习第十节(yield表达式的应用+内置函数)
  3. Linux关闭防火墙、SELinux
  4. python ssl连接 证书验证失败_即使在添加CA证书之后,Python也会请求SSL证书验证失败...
  5. write() vs. writev()
  6. day33-1 线程队列
  7. java比赛题目_【蓝桥杯2016第七届比赛题目】JAVA A组
  8. MATLAB实现BP神经网络预测汽油辛烷值
  9. phpcmsV9留言插件提交后返回上一页实现方法
  10. git tag的使用
  11. mac java tomcat_mac平台tomcat部署web项目
  12. php页面运用文本编辑器的实例,TP3.2.3框架使用CKeditor编辑器在页面中上传图片的方法分析...
  13. thinkphp5 图片压缩旋转_有非常多的图片,该怎么制作PPT?
  14. mysql5.7改了配置文件怎么生效_如何找到并修改MySQL57的配置文件m
  15. mybais学习记录一——入门程序
  16. 大数据hadoop 面试经典题
  17. XyplayerX4.0 影视解析源码+解析接口+安装步骤
  18. java paint绘图添加组件不能显示_JAVA JFrame Graphics绘画不显示问题
  19. Vue组件实现数字滚动抽奖效果
  20. 绘制cox生存分析结果的森林图

热门文章

  1. r语言如何计算t分布临界值_医学统计与R语言:超几何分布(Hypergeometric distribution)与Fisher精确检验...
  2. 教务系统漏洞再生南工大FaceMash
  3. C#-Event事件
  4. CodeSonar网络研讨会
  5. 15个HTML5播放器插件
  6. PM_29 实施条例、合同法、著作权法
  7. ansi、unico、utf8
  8. FontLab VI(字体制作软件)v6.1.4.7043中文版
  9. 自定义view绘制太极图案
  10. 【Arduino IDE 2.0他来了】