• 又因为cost=log2∗((level+ai)/level)cost=log2*((level+a_i)/level)cost=log2∗((level+ai​)/level),cost会带着log2,这个log2很可能导致答案有精度误差,因此,等式两边等式做幂,变形为2cost=1+ai/level2^{cost}=1+a_i/level2cost=1+ai​/level
  • 因为inf的原因一直wa
#include <iostream>
#include <cstring>
#include <queue>
#include <math.h>using namespace std;typedef long long ll;
typedef pair<ll ,int> pii;const int N = 1e5 + 10;
const ll inf = 1e17 + 7;struct Edge
{int v, a, b;
};vector<Edge> G[N];
int n, m;
ll dist[N];
bool st[N];void dijkstra()
{for (int i = 1; i <= n; i ++ ) dist[i] = inf;memset(st, 0, sizeof st);dist[1] = 1;priority_queue<pii, vector<pii>, greater<pii>> heap;heap.push({1, 1});while (heap.size()){auto t = heap.top();heap.pop();int ver = t.second;ll distance = t.first;if (st[ver]) continue;st[ver] = true;for (int i = 0; i < G[ver].size(); i ++ ){int v = G[ver][i].v, a = G[ver][i].a, b = G[ver][i].b;if (log2((dist[ver] * 1.0 + a) / dist[ver]) < b) continue;if (dist[v] > dist[ver] + a){dist[v] = dist[ver] + a;heap.push({dist[v], v});}}}
}int main()
{int _;scanf("%d", &_);while (_ -- ){scanf("%d%d", &n, &m);for (int i = 1; i <= n; i ++ ) G[i].clear();while (m -- ){int u, v, a, b;scanf("%d%d%d%d", &u, &v, &a, &b);G[u].push_back({v, a, b});}dijkstra();if (dist[n] == inf) puts("-1");else printf("%d\n", (int)(log2(dist[n])));}return 0;
}
#include <iostream>
#include <cstring>
#include <queue>
#include <math.h>using namespace std;typedef long long ll;
typedef pair<ll, int> pii;const int N = 1e5 + 10, M = 2e5 + 10;
const ll inf = 1e17 + 7;int h[N], e[M], ne[M], a[M], b[M], idx;
ll dist[N];
bool st[N];
int n, m;void add(int u, int v, int x, int y)
{e[idx] = v, a[idx] = x, b[idx] = y, ne[idx] = h[u] ++ , h[u] = idx ++ ;
}void dijkstra()
{//    memset(dist, 0x3f, sizeof dist);
//    memset(st, 0, sizeof st);for (int i = 1; i <= n; i ++ ) dist[i] = inf, st[i] = 0;dist[1] = 1;priority_queue<pii, vector<pii>, greater<pii>> heap;heap.push({1, 1});while (heap.size()){auto t = heap.top();heap.pop();int ver = t.second;ll distance = t.first;if (st[ver]) continue;st[ver] = true;for (int i = h[ver]; ~i; i = ne[i]){int j = e[i];if (log2((dist[ver] * 1.0 + a[i]) / dist[ver]) < b[i]) continue;if (dist[j] > dist[ver] + a[i]){dist[j] = dist[ver] + a[i];heap.push({dist[j], j});}}}
}int main()
{int _;scanf("%d", &_);while (_ -- ){scanf("%d%d", &n, &m);memset(h, -1, sizeof h);idx = 0;while (m -- ){int u, v, x, y;scanf("%d%d%d%d", &u, &v, &x, &y);add(u, v, x, y);}dijkstra();if (dist[n] == inf) printf("-1\n");else printf("%d\n", (int)(log2(dist[n])));}return 0;
}

HDU-6290 奢侈的旅行 2018女赛 Dijkstra堆优化相关推荐

  1. HDU 2066-一个人的旅行(最短路Dijkstra)

    一个人的旅行 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  2. HDU ACM 3986 Harry Potter and the Final Battle(邻接表实现最短路dijkstra堆优化记录路径 + 枚举最短路上每条边)...

    http://acm.hdu.edu.cn/showproblem.php?pid=3986 题意: 从起点1 到 终点n,删除图中任意一条边求最短路的最坏情况. n  --表示有n个点 m --边数 ...

  3. A - Age of Moyu HDU - 6386(Dijkstra+堆优化)

    要解决这道题,可以用dfs+bfs,但是我不会,所以我只会dijkstra算法: 要解决这道题必须明白迪杰斯特拉算法的核心思想,我是这样理解的: 我可以任意举例一个图: 比如这个图,那么求1-6的最短 ...

  4. 【HDU - 6290】 奢侈的旅行 (对题目预处理 + DIjkstra最短路)

    题干: 高玩小Q不仅喜欢玩寻宝游戏,还喜欢一款升级养成类游戏.在这个游戏的世界地图中一共有nn个城镇,编号依次为11到nn. 这些城镇之间有mm条单向道路,第ii 条单项道路包含四个参数ui,vi,a ...

  5. HDU-6290_奢侈的旅行(Dijstra+堆优化)

    奢侈的旅行 Time Limit: 14000/7000 MS (Java/Others) Memory Limit: 512000/512000 K (Java/Others) Problem De ...

  6. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.20日(2018省赛A组第8题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

  7. 人脸识别——2018华中赛数学建模总结整理

    2018华中赛数学建模总结整理 题目:人脸识别 题目简介 第一题思路 第二题思路 第三题思路 第一题结果 第二题结果 第三题结果 第一题代码 第二题代码 第三题代码 转眼已经大四了,加上也没什么课程, ...

  8. HDU 2066-一个人的旅行(图论)

    HDU 2066-一个人的旅行 题目原址 [http://acm.hdu.edu.cn/showproblem.php?pid=2066] 题意 给定一些起点,一些终点,和一些边的权,构成一个无向图, ...

  9. 倪文迪陪你学蓝桥杯2021寒假每日一题:1.19日(2018省赛A组第7题)

    2021年寒假每日一题,2017~2019年的省赛真题. 本文内容由倪文迪(华东理工大学计算机系软件192班)和罗勇军老师提供. 后面的每日一题,每题发一个新博文,请大家每天看博客蓝桥杯专栏: htt ...

最新文章

  1. WCF入门(一)——简单的示例
  2. 三维重建【二】————3D reconstruction 较为实用的算法资料整理(传统方式)
  3. angular蚂蚁_Angular 中后台前端解决方案 - Ng Alain 介绍
  4. 2015年3月-前端开发月刊
  5. fedora java 开发环境_在Linux(Fedora)下搭建JAVA开发环境
  6. PPT图标的正确使用和插入与编辑形状
  7. plus 什么是mybais_谈谈自己用mybatis-plus中的一些经验。
  8. 随想录(定义自己的cpu和工具链)
  9. 应用IMXMLObject自定义功能性组件
  10. ElementUI:项目中引入自己的ICON
  11. 单表查询 多表查询 子查询
  12. 利用独立ip在百度知道留链接方式揭秘
  13. 象棋军师app已经上线
  14. 网易云邮箱验证码注册及修改密码
  15. 城市场景车路协同网络该怎么建?
  16. Java基础篇--异常机制
  17. android 图片叠加xml,Drawable子类之——LayerDrawable (图层叠加)
  18. 六年级计算机学情分析报告,六年级学生学情分析报告.doc
  19. service_cmn
  20. 首1标准型和尾1标准型

热门文章

  1. 如何在用户登录时SAP时自动执行Tcode或者其他一些东西
  2. sap 销售订单过量交货和拣配有关设置
  3. SAP SD 条件技术
  4. 达策— 毕盛财务分析系统
  5. 数据分析常用功能:巧用门户制作功能,让多个报表一览无余
  6. 淘宝特价版月活过亿背后,下沉市场正进入C2M时代
  7. 程序员合同日期不到想辞职_程序员被迫辞职,临走把新员工办公桌擦遍,老板:交5万罚款...
  8. mysql开源内库_将内裤穿在外面的男人(mysql)
  9. 攻防世界-REverse-tt3441810(超简单秒懂)
  10. c语言中用于判断ch是否是字符的表达式,最新C语言复习题集资料