HDU6070 Lazy Running (最短路)
2017-09-13 11:12
260 查看
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; }
反思
因为有循环,所以才考虑同余类吗?相关文章推荐
- HDU 6071 Lazy Running(很牛逼的最短路)
- HDU 6071 Lazy Running(同余最短路)
- HDU 6071 Lazy Running(同余+最短路)
- HDU 6071 Lazy Running(最短路)
- hdu 6071 Lazy Running(spfa+同余最短路)
- 【最短路】【spfa】hdu6071 Lazy Running
- Hdu-6071 Lazy Running(trick最短路)
- 2017年多校赛第四场 1005 Lazy Running(同余最短路)
- 多校4 lazy running (最短路)
- POJ6071 Lazy Running(最短路)
- hdu 6071 Lazy Running 最短路建模
- hdu 6071 Lazy Running(同余最短路)
- HDU6071 Lazy Running【最短路】
- hdu6071-最短路&思维&多校4&同余-Lazy Running
- HDU6071-Lazy Running 最短路+思维
- HDU 5294 Tricks Device (最短路变体) 2015多校联合第一场
- HDU5521Meeting(最短路建图)
- 接口模块不良导致网络短路
- POJ1847--Tram 【最短路spfa】
- HDU 2544 最短路