KEYENCE Programming Contest 2023 Autumn(AtCoder Beginner Contest 325) - AtCoder E

E - Our clients, please wait a moment (atcoder.jp)(分层图最短路)

因为只能从坐公司汽车切换到做火车,所以我们可以考虑采用分层图最短路.

对于坐公司汽车和坐火车分别建立\(G_0\)和\(G_1\)两张图,且因为可以在任意时刻任意地点从公司汽车切换到火车,所以我们可以对于每个地点建立\(\forall x(G_0(x) \rightarrow G_1(x))\)的边权为\(0\)的有向边,\(G_0\)为第一层,有节点\(1 \sim n\),即公司汽车的路线;第二层有节点\(1+n \sim n + n\),即火车的路线,两层节点间\(i\)与\(i+n\)也用权值为0的有向边连起来,起点为第一层的\(1\),终点就是第二层的\(n+n\),注意因为分层,所以分层图\(dis\)范围初始化是\(K\)(\(K\)层)\(\times N + N\)(\(N\)个点).

#include <bits/stdc++.h>
#define debug(a) cout<<#a<<"="<<a<<'\n'; using namespace std;
using i64 = long long; typedef pair<i64, i64> PII; const int MAXV = 1e4 + 1;
struct edge {
i64 to, cost;
}; vector<edge> G[MAXV];
i64 d[3010]; void dijkstra(int s) { priority_queue<PII, vector<PII>, greater<PII> > que; memset(d, 0x3f3f3f3f, sizeof d);
d[s] = 0;
que.push(PII(0, s));
while (!que.empty())
{
PII p = que.top(); que.pop();
int v = p.second;
if (d[v] < p.first) continue;
for (int i = 0; i < G[v].size(); i++) {
edge e = G[v][i];
if (d[e.to] > d[v] + e.cost) {
d[e.to] = d[v] + e.cost;
que.push(PII(d[e.to], e.to));
}
}
}
} int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); int A, B, C, N;
cin >> N >> A >> B >> C;
vector D(N + 1, vector<i64>(N + 1));
for (int i = 1; i <= N; i ++)
for (int j = 1; j <= N; j ++)
cin >> D[i][j]; for (int i = 1; i <= N; i ++) {
for (int j = 1; j <= N; j ++) {
if (i == j) continue;
G[i].push_back(edge{j, D[i][j] * A});
G[i].push_back(edge{i + N, 0});
G[i + N].push_back(edge{j + N, D[i][j] * B + C});
}
} dijkstra(1); cout << d[N + N] << '\n'; return 0;
}

参考资料

浅析分层图最短路 - feather02的博客 - 洛谷博客 (luogu.com.cn)

ABC325E 题解 - Welcome to CultReborn's Blog - 洛谷博客 (luogu.com.cn)

分层图复习 / abc325e - 可可爱爱 - 洛谷博客 (luogu.com.cn)

[KEYENCE Programming Contest 2023 Autumn(AtCoder Beginner Contest 325) E的更多相关文章

  1. KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解

    KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...

  2. AtCoder Beginner Contest 184 题解

    AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...

  3. AtCoder Beginner Contest 255(E-F)

    Aising Programming Contest 2022(AtCoder Beginner Contest 255) - AtCoder E - Lucky Numbers 题意: 给两个数组a ...

  4. AtCoder Beginner Contest 177 题解

    AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...

  5. AtCoder Beginner Contest 173 题解

    AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...

  6. AtCoder Beginner Contest 172 题解

    AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...

  7. AtCoder Beginner Contest 254(D-E)

    Tasks - AtCoder Beginner Contest 254 D - Together Square 题意: 给定一个N,找出所有不超过N的 ( i , j ),使得( i * j )是一 ...

  8. AtCoder Beginner Contest 076

    A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...

  9. AtCoder Beginner Contest 068 ABCD题

    A - ABCxxx Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement This contes ...

  10. AtCoder Beginner Contest 154 题解

    人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...

随机推荐

  1. 内网服务器通过单台外网服务器实现外网访问,iptables NAT

    环境: ​ servera: 外网服务器 ​ serverb: 内网服务器 servera内网网关(GATEWAY)要设置为外网IP,其IP地址作为其它内网服务器的网关 servera 内网网卡配置 ...

  2. 麒麟操作系统V10安装mysql8.0.26

    今年mysql装得有点多,大概有4次了,快变系统工程师了! 本文重点说下如何识别版本和配置服务! 首先两点: 1)麒麟本质是linux内核,所以基本上centos的操作在这里可以通用 2)虽然通用,但 ...

  3. Cython编译报错“numpy/arrayobject.h: No such file or directory”解决方案

    问题背景 Cython是用来加速Python程序性能的一个工具,其基本使用逻辑就是将类Python代码(*.pyx扩展格式)编译成\(*.c,*.so\)动态链接库文件,然后就可以在正常的Python ...

  4. 使用Nginx在80端口上代理多个.NET CORE网站

    有两个.NET CORE3.1网站部署在CentOS7上(内网IP是192.168.2.32),现在想实现访问http://192.168.2.32时访问A网站,访问http://192.168.2. ...

  5. 面试官:Dubbo一次RPC调用会经过哪些环节?

    大家好,我是三友~~ 今天继续探秘系列,扒一扒一次RPC请求在Dubbo中经历的核心流程. 本文是基于Dubbo3.x版本进行讲解 一个简单的Demo 这里还是老样子,为了保证文章的完整性和连贯性,方 ...

  6. sora未来在哪里,是否改变世界?

    什么是Sora?(Solo 社区投稿) Sora在日语中是天空的意思,是一种文本到视频的扩散模型,Sora与使用文本提示创建图像的 Dall-E 非常相似,Sora 使用文本提示创建短视频.Sora ...

  7. 全网最适合入门的面向对象编程教程:04 类和对象的 Python 实现-为自定义类添加方法(PySerial 库接收串口数据)

    全网最适合入门的面向对象编程教程:04 类和对象的 Python 实现-为自定义类添加方法(PySerial 库接收串口数据) 摘要: 本文我们主要讲解了如何为自定义类添加方法,pyseria 库的基 ...

  8. webgl智慧楼宇发光系列之线性采样下高斯模糊

    目录 webgl智慧楼宇发光系列之线性采样下高斯模糊 效率问题 线性采样 代码讲解 总结 参考文档 webgl智慧楼宇发光系列之线性采样下高斯模糊 前面一篇文章 <webgl智慧楼宇发光效果算法 ...

  9. [oeasy]python018_ 如何下载github仓库_git_clone_下载仓库

    继续运行 回忆上次内容 上次从 2行代码 进化到了 万行代码 命令 作用 yy 复制光标所在行代码 到剪贴板 p 粘贴 剪贴板中的内容 9999p 将剪贴板中的代码粘贴9999次 保存运行一条龙 :w ...

  10. C# 对象复制三种方法效率对比——反射、序列化、表达式树

    1.需求 在代码中经常会遇到需要把对象复制一遍,或者把属性名相同的值复制一遍. 比如: public class Student { public int Id { get; set; } publi ...