牛客寒假5-D.炫酷路途
链接: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.炫酷路途相关推荐
- 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱
今天的比赛没打( 睡午觉去了,今天太累了 晚上来看看题 2021牛客寒假算法基础集训营1 J 一群小青蛙呱蹦呱蹦呱 题目传送门 板子题( 我们知道由唯一分解定理得,若 n=p1α1×p2α2×p3α3 ...
- 2022牛客寒假算法基础集训营6 签到题5题(附基础集训营4-6签到题总结)
1.I-A+B问题 模拟,类似于高精度,竖式运算 #include<bits/stdc++.h> using namespace std; typedef long long LL; in ...
- 2022牛客寒假算法基础集训营3 签到题7题(附基础集训营1-3签到题总结)
1.A-智乃的Hello XXXX 签到 #include<bits/stdc++.h> using namespace std; int main(){cout<<" ...
- (构造+二进制)2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II
2020牛客寒假算法基础集训营3B.牛牛的DRB迷宫II 思路: 一开始我是考虑全部都是B会怎么样,然后删改,结果到后面发现很难推到普遍规律(可能是因为我没看出来). 看了题解之后,觉得这题出的挺有意 ...
- 构造-牛客寒假集训营3-牛牛的DRB迷宫II
构造-牛客寒假集训营3-牛牛的DRB迷宫II 题目: 题意: 输入一个数字,表示从起点(1,1)到终点(n,m)的方案数量,输出满足条件的迷宫.输入一个数字,表示从起点(1,1)到终点(n,m)的方案 ...
- 2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II二进制详解
2020牛客寒假算法基础集训营3 B 牛牛的DRB迷宫II B 牛牛的DRB迷宫II 输入: 25 输出: 5 5 RBBBR BBBBB BBBDB BDBBB RBBBB 题解 由图求方案数,我们 ...
- 2023牛客寒假算法基础集训营4_20230130「向上取整」「夹逼dp」「lowbit科学+树状数组性质」「搜索」「倍增跳表」「莫队」
6/13 教育场是有被教育到.(预计会鸽几题. 已过非太水的题们 //B //https://ac.nowcoder.com/acm/contest/46812/B//小构造小数学#include & ...
- 【解题报告】2021牛客寒假算法基础集训营4
[解题报告]2021牛客寒假算法基础集训营4 前面的话 A :九峰与签到题 | 模拟 (签到题) B: 武辰延的字符串 | exKMP D :温澈滢的狗狗 | 二分 E: 九峰与子序列 | d p d ...
- 2023牛客寒假算法基础集训营1_20230116「典dp」「典set」「小思维+bfs」「小思维+构造+码力」「位运算博弈(人类智慧)」
6/13 打得不好,这两天家里也很不好,跟做梦一样,脑子好像被僵尸吃掉了,前两个小时胡乱瞎写交题只过样例,wa了再看,什么b错都能写出来. M. M-本题主要考察了找规律_2023牛客寒假算法基础集训 ...
- 2021牛客寒假算法基础集训营1
2021牛客寒假算法基础集训营1 A. 串(线性DP) B. 括号(构造) E.三棱锥之刻(几何) F. 对答案一时爽(签到) I. 限制不互素对的排列(构造) J. 一群小青蛙呱蹦呱蹦呱 A. 串( ...
最新文章
- linux shell sed 添加空行
- linux 主进程 等待,Linux启动与进程
- php session 反序列化,PHP SESSION反序列化本地样例分析
- 跟2G说再见?这些IoT“钉子户”表示做不到……
- 【JAVASCRIPT】处理表单事件
- CentOS6.7 mysql5.6.33修改数据文件位置
- java php quercus,php中Quercus框架的安装
- oracle的会话(session)
- 量子计算机对未来影响,量子计算机和可控核聚变,哪一个对人类未来的影响更大?...
- 全网最全移动端App性能测试方法,值得收藏!
- graphpad prism8教程柱状图_GraphPad 8.0 新功能:柱状图功能体验大优化!(附教学)...
- Android登录 之 Twitter登录
- 测试开发工作者日记:2020.6.10-6.11
- 软件开发工具——理论篇
- 微信公众号发送模板通知
- 《算法笔记》Codeup练习 5.1小节 简单数学问题
- java图片的在线预览_【Java】web实现图片在线预览
- 水上飞机行业调研报告 - 市场现状分析与发展前景预测
- 如何更改AD域安全策略-密码必须符合复杂性要求
- Lenovo y40-70安装Ubuntu 16.04*后出现的[Firmware Bug]
热门文章
- SpringBoot+Vue实现请求后台获取Base64编码的图片验证码并使用Redis缓存实现2分钟内有效
- 怎样使用element-starter快速搭建ElementUI项目
- Jquery中使用Validate插件使表单验证更加简单
- Python中使用turtle绘制多个同心圆
- 一篇不错的讲解Java异常的文章(转载)
- TDD测试驱动开发过程
- android 关于内存优化的一些总结
- virtualbox+vagrant学习-2(command cli)-20-vagrant suspend命令
- 2018-2019-1 20165318 20165322 20165326 实验一 开发环境的熟悉
- 认识Linux 、安装虚拟机 、 安装centos7