链接:https://ac.nowcoder.com/acm/contest/331/D

题意:

小希现在要从寝室赶到机房,路途可以按距离分为N段,第i个和i+1个是直接相连的,只需要一秒钟就可以相互到达。

炫酷的是,从第i个到第i+2pi+2p个也是直接相连的(其中p为任意非负整数),只需要一秒钟就可以相互到达。

更炫酷的是,有K个传送法阵使得某些u,v之间也是直接相连的,只需要一秒钟就可以相互到达,当然,由于设备故障,可能会有一些u=v的情况发生。

现在小希为了赶路,她需要在最短的时间里从寝室(编号为1)到达机房(编号为N),她不希望到达这N个部分以外的地方(不能到达位置N+1),也不能走到比自己当前位置编号小的地方(比如从5走到3是非法的)。

她想知道最短的时间是多少。

思路:

bfs,先进对传送点,在进入i+2^p的最大点,或者,某个点存在传送门也进队。

感觉是个假算法。

代码:

#include <bits/stdc++.h>
using namespace std;
typedef long long LL;
const int MAXK = 20;struct Node
{int _w;int _step;Node(int w,int step):_w(w), _step(step){}
};
pair<int, int> C[MAXK];int Quick_M(int t)
{int x = 2;int res = 1;while (t > 0){if (t&1)res *= x;x *= x;t >>= 1;}return res;
}int main()
{int n,k;cin >> n >> k;for (int i = 1;i <= k;i++)cin >> C[i].first >> C[i].second;queue<Node> que;que.emplace(1,0);while (!que.empty()){//cout << 1 << endl;Node now = que.front();if (now._w == n)break;for (int i = 1;i <= k;i++){if (C[i].first == now._w){if (C[i].second <= now._w)continue;que.emplace(C[i].second, now._step + 1);}}for (int i = 0;i <= 30;i++){LL tx = now._w + Quick_M(i);if (tx > n){que.emplace(now._w + Quick_M(i - 1), now._step + 1);break;}else{for (int i = 1;i <= k;i++){if (C[i].first == tx){if (C[i].second <= tx)continue;que.emplace(tx, now._step + 1);}}}}que.pop();}cout << que.front()._step << endl;return 0;
}

  

转载于:https://www.cnblogs.com/YDDDD/p/10353798.html

牛客寒假5-D.炫酷路途相关推荐

  1. 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱

    今天的比赛没打( 睡午觉去了,今天太累了 晚上来看看题 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱 题目传送门 板子题( 我们知道由唯一分解定理得,若 n=p1α1×p2α2×p3α3 ...

  2. 2022牛客寒假算法基础集训营6 签到题5题(附基础集训营4-6签到题总结)

    1.I-A+B问题 模拟,类似于高精度,竖式运算 #include<bits/stdc++.h> using namespace std; typedef long long LL; in ...

  3. 2022牛客寒假算法基础集训营3 签到题7题(附基础集训营1-3签到题总结)

    1.A-智乃的Hello XXXX 签到 #include<bits/stdc++.h> using namespace std; int main(){cout<<" ...

  4. (构造+二进制)2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II

    2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II 思路: 一开始我是考虑全部都是B会怎么样,然后删改,结果到后面发现很难推到普遍规律(可能是因为我没看出来). 看了题解之后,觉得这题出的挺有意 ...

  5. 构造-牛客寒假集训营3-牛牛的DRB迷宫II

    构造-牛客寒假集训营3-牛牛的DRB迷宫II 题目: 题意: 输入一个数字,表示从起点(1,1)到终点(n,m)的方案数量,输出满足条件的迷宫.输入一个数字,表示从起点(1,1)到终点(n,m)的方案 ...

  6. 2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II二进制详解

    2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II B 牛牛的DRB迷宫II 输入: 25 输出: 5 5 RBBBR BBBBB BBBDB BDBBB RBBBB 题解 由图求方案数,我们 ...

  7. 2023牛客寒假算法基础集训营4_20230130「向上取整」「夹逼dp」「lowbit科学+树状数组性质」「搜索」「倍增跳表」「莫队」

    6/13 教育场是有被教育到.(预计会鸽几题. 已过非太水的题们 //B //https://ac.nowcoder.com/acm/contest/46812/B//小构造小数学#include & ...

  8. 【解题报告】2021牛客寒假算法基础集训营4

    [解题报告]2021牛客寒假算法基础集训营4 前面的话 A :九峰与签到题 | 模拟 (签到题) B: 武辰延的字符串 | exKMP D :温澈滢的狗狗 | 二分 E: 九峰与子序列 | d p d ...

  9. 2023牛客寒假算法基础集训营1_20230116「典dp」「典set」「小思维+bfs」「小思维+构造+码力」「位运算博弈(人类智慧)」

    6/13 打得不好,这两天家里也很不好,跟做梦一样,脑子好像被僵尸吃掉了,前两个小时胡乱瞎写交题只过样例,wa了再看,什么b错都能写出来. M. M-本题主要考察了找规律_2023牛客寒假算法基础集训 ...

  10. 2021牛客寒假算法基础集训营1

    2021牛客寒假算法基础集训营1 A. 串(线性DP) B. 括号(构造) E.三棱锥之刻(几何) F. 对答案一时爽(签到) I. 限制不互素对的排列(构造) J. 一群小青蛙呱蹦呱蹦呱 A. 串( ...

最新文章

  1. linux shell sed 添加空行
  2. linux 主进程 等待,Linux启动与进程
  3. php session 反序列化,PHP SESSION反序列化本地样例分析
  4. 跟2G说再见?这些IoT“钉子户”表示做不到……
  5. 【JAVASCRIPT】处理表单事件
  6. CentOS6.7 mysql5.6.33修改数据文件位置
  7. java php quercus,php中Quercus框架的安装
  8. oracle的会话(session)
  9. 量子计算机对未来影响,量子计算机和可控核聚变,哪一个对人类未来的影响更大?...
  10. 全网最全移动端App性能测试方法,值得收藏!
  11. graphpad prism8教程柱状图_GraphPad 8.0 新功能:柱状图功能体验大优化!(附教学)...
  12. Android登录 之 Twitter登录
  13. 测试开发工作者日记:2020.6.10-6.11
  14. 软件开发工具——理论篇
  15. 微信公众号发送模板通知
  16. 《算法笔记》Codeup练习 5.1小节 简单数学问题
  17. java图片的在线预览_【Java】web实现图片在线预览
  18. 水上飞机行业调研报告 - 市场现状分析与发展前景预测
  19. 如何更改AD域安全策略-密码必须符合复杂性要求
  20. Lenovo y40-70安装Ubuntu 16.04*后出现的[Firmware Bug]

热门文章

  1. SpringBoot+Vue实现请求后台获取Base64编码的图片验证码并使用Redis缓存实现2分钟内有效
  2. 怎样使用element-starter快速搭建ElementUI项目
  3. Jquery中使用Validate插件使表单验证更加简单
  4. Python中使用turtle绘制多个同心圆
  5. 一篇不错的讲解Java异常的文章(转载)
  6. TDD测试驱动开发过程
  7. android 关于内存优化的一些总结
  8. virtualbox+vagrant学习-2(command cli)-20-vagrant suspend命令
  9. 2018-2019-1 20165318 20165322 20165326 实验一 开发环境的熟悉
  10. 认识Linux 、安装虚拟机 、 安装centos7