题目描述
小明买了块高端大气上档次的电子手表,他正准备调时间呢。
在 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
思路:一开始以为是dp的,但是数x不一定是由比x小的数字转换来的,也有可能是由比x大的数字转化来的。这样dp就不行了。
题目要求的是,由一个时间调到另一个时间最多要按多少次,那么由一个时间调到另一个时间,可能相差的数字是1,2,3…n-1.那么这个题目就是要我们求由0转换到(1,2…n-1)采取最优策略,最多要按多少次。直接bfs就可以了。注意取余。
代码如下:

#include<bits/stdc++.h>
#define ll long long
#define inf 0x3f3f3f3f
using namespace std;const int maxx=1e5+100;
struct node{int u,num;node(int a,int b){u=a,num=b;}
};
int vis[maxx],num[maxx];
int n,k;inline void bfs(int u)
{memset(vis,0,sizeof(vis));memset(num,0,sizeof(num));num[0]=0;queue<node> q;q.push(node(0,0));while(q.size()){node a=q.front();q.pop();if(vis[a.u]) continue;vis[a.u]=1;num[a.u]=a.num;q.push(node((a.u+1)%n,a.num+1));q.push(node((a.u+k)%n,a.num+1));}
}
int main()
{scanf("%d%d",&n,&k);bfs(0);sort(num+1,num+n);printf("%d\n",num[n-1]);return 0;
}

努力加油a啊,(o)/~

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

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

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

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

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

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

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

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

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

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

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

  6. [蓝桥杯][2018年第九届真题]全球变暖

    全球变暖 题目描述 思路解析 AC代码 题目描述 你有一张某海域NxN像素的照片,"."表示海洋."#"表示陆地,如下所示: ....... .##.... . ...

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

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

  8. 蓝桥杯2018年第九届真题——乘积尾零

    乘积尾零 一.题目内容 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可. 如下的 10 行数据,每行有 10 个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 ...

  9. [蓝桥杯][2018年第九届真题] 递增三元组、螺旋折线、日志统计、全球变暖、乘积最大

    个人题解链接,历届试题,正在更新中~ 题目目录 递增三元组 螺旋折线 日志统计 全球变暖 乘积最大 递增三元组 给定三个整数数组 A = [A1, A2, - AN], B = [B1, B2, - ...

最新文章

  1. centos 6.8 编译安装git 2.11.0
  2. 创建maven项目但是总是报错
  3. 详解图像直方图均衡化原理,附MATLAB、C、C++源码
  4. listen()与accept()函数的区别
  5. 从零开始学视觉Transformer(1):Hello Vision Transformer
  6. 分享几个神奇有效的Python学习网站
  7. 小熊派:用OpenHarmory3.0点亮LED
  8. oracle erase,c++ stl容器vector删除(erase),遍历等基本用法介绍及头文件
  9. 2021年软件测试面试题大全
  10. 树枝学术 | 论文翻译全攻略
  11. NVIDIA英伟达控制面板点击没反应解决方案
  12. 打印机扫描找不到计算机用户名,打印机扫描到pc显示不可用 打印机扫描到pc显示不可用的解决方法...
  13. 公司发展事件时间轴jsjs特效
  14. 60秒Dapp快讯 | 全球公有链技术评估:以太坊在应用性上排第一;蚂蚁金服区块链试水医疗电子票据
  15. 【SpringBoot】12.SpringBoot整合Dubbo+Zookeeper
  16. request:fail -202:net::ERR_CERT_AUTHORI
  17. Libuv 句柄优雅关闭
  18. 拓普康机器人控制器_营山拓普康MS05AXⅡ全自动测量机器人价格
  19. java实现短链接得到长链接!!!
  20. 【老孙点评】古人读书十二法

热门文章

  1. MFC多文档应用程序同时显示两个视图
  2. java中不用impore导入的_java import机制(不用IDE)
  3. cd : cannot create temp file for here-document: No space left on device
  4. Android Glide 加载圆形图片(绝对实用)
  5. python新手入门英文词汇笔记(1-1)_Python新手入门英文词汇(1-1)
  6. python命令行工具_python命令行工具Click快速掌握
  7. 摔跤视频软件测试,Apple Watch 4摔倒检测立功:成功救人一命,网友:马上入手!...
  8. Error:Could not resolve all files for configuration ':app:preDebugCompileClasspath'. Could not fin
  9. 缓存目录的区别getCacheDir()、getFilesDir()、getExternalFilesDir()、getExternalCacheDir()的作用
  10. 一个java源文件允许_一个Java源文件中最多只能有一个class定义