牛客寒假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;
}
牛客寒假5-D.炫酷路途的更多相关文章
- 牛客训练五:炫酷路途(c++与dp)
题目链接:传送门 思路:每隔2^i(0<=i<=INF)就有一条路径,所以可以将从头到尾的路线视为一个有向图, 将ai,bi以此输入,然后将路径从小到大排序,不断更新路径. __built ...
- 2020牛客寒假算法基础集训营2 J题可以回顾回顾
2020牛客寒假算法基础集训营2 A.做游戏 这是个签到题. #include <cstdio> #include <cstdlib> #include <cstring ...
- 2020牛客寒假算法基础集训营1 J题可以回顾回顾
2020牛客寒假算法基础集训营1 这套题整体来说还是很简单的. A.honoka和格点三角形 这个题目不是很难,不过要考虑周全,面积是1,那么底边的长度可以是1也可以是2, 注意底边1和2会有重复的, ...
- 牛客寒假算法基础集训营5 J 炫酷数学
链接:https://ac.nowcoder.com/acm/contest/331/J来源:牛客网 小希最近想知道一个东西,就是A+B=A|B(其中|为按位或)的二元组有多少个. 当然,直接做这个式 ...
- 2019基于Hexo快速搭建个人博客,打造一个炫酷博客(1)-奥怪的小栈
本文转载于:奥怪的小栈 这篇文章告诉你如何在2019快速上手搭建一个像我一样的博客:基于HEXO+Github搭建.并完成SEO优化,打造一个炫酷博客. 本站基于HEXO+Github搭建.所以你需要 ...
- 欧拉函数-gcd-快速幂(牛客寒假算法基础集训营1-D-小a与黄金街道)
题目描述: 链接:https://ac.nowcoder.com/acm/contest/317/D来源:牛客网小a和小b来到了一条布满了黄金的街道上.它们想要带几块黄金回去,然而这里的城管担心他们拿 ...
- Applese 的毒气炸弹 G 牛客寒假算法基础集训营4(图论+最小生成树)
链接:https://ac.nowcoder.com/acm/contest/330/G来源:牛客网 Applese 的毒气炸弹 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 262 ...
- 牛客寒假算法基础集训营3处女座和小姐姐(三) (数位dp)
链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...
- 牛客寒假算法基础集训营3B 处女座的比赛资格(用拓扑排序解决DAG中的最短路)
链接:https://ac.nowcoder.com/acm/contest/329/B 来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言5242 ...
随机推荐
- linux3 源代码安装
源代码安装: 通过yum就不会有依赖关系(安装mysql是安装mysqlServer).Rpm更新的时候,如果没有安装软件就回去安装. 应用程序和系统命令会放在不同的目录中(bin,sbin,usr/ ...
- 测试,测试开发,QA,QM,QC--------- 测试之路勿跑偏
测试,测试开发,QA,QM,QC可能是测试行业里的细分角色了,加了不少群学习,看到不同人有对自己不同的角色定位.我也做了这挺长时间的测试,也和大部分测试同胞一样,为了一份好的工作学习各种各样的技术,但 ...
- iap 应用内购买相关的解释
应用范围app Store Review Guidelines : https://developer.apple.com/app-store/review/guidelines/ 中 11.12 ...
- 关于Ajax实现的简单示例
一.代码示例 关于Ajax的基本概念(包括XMLHttpRequest对象及其相关方法属性)移步这里(w3school中文版)学习了解. <!doctype html> <html ...
- 【Codeforces】879D. Teams Formation 思维+模拟
题意 给定$n$个数,重复拼接$m$次,相邻$k$个重复的可消除,问最后序列中有多少个数 首先可以发现当$k>=n$时,如果要使$n$个数可以被消除,那么$n$个数必须一样,否则$n$个数不能被 ...
- Add GNOME to a CentOS Minimal Install
by Jeff Hunter, Sr. Database Administrator Contents Introduction CentOS 6 About the Author Introduct ...
- BZOJ_3566_[SHOI2014]概率充电器_概率+树形DP
BZOJ_3566_[SHOI2014]概率充电器_概率+树形DP Description 著名的电子产品品牌 SHOI 刚刚发布了引领世界潮流的下一代电子产品——概率充电器: “采用全新纳米级加工技 ...
- python下载各大主流视频网站电影
You-Get 是一个命令行工具, 用来下载各大视频网站的视频, 是我目前知道的命令行下载工具中最好的一个, 之前使用过 youtube-dl, 但是 youtube-dl 吧, 下载好的视频是分段的 ...
- HDU2159(完全背包)
FATE Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...
- Day03:集合、文件处理和函数基础
上节课复习: 1.总结 可变/不可变: 可变类型:list,dict 不可变类型:int,float,str,tuple ...