HDU6070 Lazy Running (最短路)
来源:互联网 发布:linux ifconfig 找不到 编辑:程序博客网 时间:2024/05/28 14:56
HDU6070 Lazy Running (最短路)
题目描述
给一个四边形及其边长,求固定点出发回到固定点走过距离不小K的最短距离。
题目分析
关于证明,叉姐在这里有说。
代码
#include <stdio.h>#include <algorithm>#include <queue>using namespace std;typedef long long ll;typedef pair<ll, int> Pair;const int maxn = 30100;const ll INF = 0x3f3f3f3f3f3f3f3f;struct Edge{ int u, v, c, nxt;}e[16 * maxn];priority_queue<Pair> q;int dis[4], head[8 * maxn], e_cnt, done[8 * maxn];ll d[8 * maxn];void Add(int u, int v, int c){ int id = e_cnt++; e[id].u = u; e[id].v = v; e[id].c = c; e[id].nxt = head[u]; head[u] = id;}int main(){ int T; scanf("%d", &T); while(T--){ ll K; scanf("%lld", &K); for(int i = 0; i < 4; i++) scanf("%d", &dis[i]); int m = 2 * min(dis[0], dis[1]), n = 4 * m; for(int i = 0; i < n; i++) head[i] = -1; e_cnt = 0; for(int k = 0; k < 4; k++) for(int i = 0; i < m; i++){ Add(k * m + i, (k + 1) % 4 * m + (i + dis[k]) % m, dis[k]); Add((k + 1) % 4 * m + i, k * m + (i + dis[k]) % m, dis[k]); } for(int i = 0; i < n; i++){ d[i] = i == m ? 0 : INF; done[i] = false; } q.push(Pair(0ll, m)); while(!q.empty()){ int u = q.top().second; q.pop(); if(done[u]) continue; done[u] = true; for(int id = head[u]; id != -1; id = e[id].nxt){ int v = e[id].v; if(d[v] > d[u] + e[id].c) q.push(Pair(-(d[v] = d[u] + e[id].c), v)); } } ll ans = INF; for(int i = m; i < 2 * m; i++){ if(d[i] < K) d[i] += ((K - d[i] - 1) / m + 1) * m; ans = min(ans, d[i]); } printf("%lld\n", ans); } return 0;}
反思
因为有循环,所以才考虑同余类吗?
阅读全文
0 0
- HDU6070 Lazy Running (最短路)
- POJ6071 Lazy Running(最短路)
- HDU6071 Lazy Running【最短路】
- HDU 6071 Lazy Running(同余+最短路)
- HDU 6071 Lazy Running(同余最短路)
- HDU 6071 Lazy Running(模同余最短路)
- Hdu-6071 Lazy Running(trick最短路)
- HDU6071-Lazy Running 最短路+思维
- 2017年多校赛第四场 1005 Lazy Running(同余最短路)
- HDU 6071 Lazy Running(同余最短路)
- HDU 6071 Lazy Running 同余 + 最短路
- Hdu 6071 Lazy Running【同余最短路】
- hdu 6071 Lazy Running(spfa+同余最短路)
- hdu6071-最短路&思维&多校4&同余-Lazy Running
- 2017多校第4场 HDU 6071 Lazy Running 同余最短路
- 2017多校四 1005题 hdu 6071 Lazy Running 同余类 最短路
- HDU6071Lazy Running(同余最短路)
- zoj 3166 Lazy Tourist(最短路Floyd)
- 用phpstudy正确配置阿里服务器 网站就是不能浏览原因
- 怎么解决电脑频繁死机?
- 工作新的开始
- 关于微信wx.previewImage图片没有正常显示的问题
- jQuery 停止动画 stop()
- HDU6070 Lazy Running (最短路)
- Hive生产脚本常用参数设置[合并小文件,压缩文件,动态分区,数据倾斜...]
- Git基本操作
- shell学习笔记
- 处理vue-cli 打包第三方库时语法报错 Unexpected token: name (idSeed)
- Eclipse 安装GWT环境
- linux学习笔记(18)
- 浅谈javaScript中的闭包
- 详解C中volatile关键字