[KEYENCE Programming Contest 2023 Autumn(AtCoder Beginner Contest 325) E
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的更多相关文章
- KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解
KYOCERA Programming Contest 2021(AtCoder Beginner Contest 200) 题解 哦淦我已经菜到被ABC吊打了. A - Century 首先把当前年 ...
- AtCoder Beginner Contest 184 题解
AtCoder Beginner Contest 184 题解 目录 AtCoder Beginner Contest 184 题解 A - Determinant B - Quizzes C - S ...
- AtCoder Beginner Contest 255(E-F)
Aising Programming Contest 2022(AtCoder Beginner Contest 255) - AtCoder E - Lucky Numbers 题意: 给两个数组a ...
- AtCoder Beginner Contest 177 题解
AtCoder Beginner Contest 177 题解 目录 AtCoder Beginner Contest 177 题解 A - Don't be late B - Substring C ...
- AtCoder Beginner Contest 173 题解
AtCoder Beginner Contest 173 题解 目录 AtCoder Beginner Contest 173 题解 A - Payment B - Judge Status Summ ...
- AtCoder Beginner Contest 172 题解
AtCoder Beginner Contest 172 题解 目录 AtCoder Beginner Contest 172 题解 A - Calc B - Minor Change C - Tsu ...
- AtCoder Beginner Contest 254(D-E)
Tasks - AtCoder Beginner Contest 254 D - Together Square 题意: 给定一个N,找出所有不超过N的 ( i , j ),使得( i * j )是一 ...
- AtCoder Beginner Contest 076
A - Rating Goal Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement Takaha ...
- AtCoder Beginner Contest 068 ABCD题
A - ABCxxx Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement This contes ...
- AtCoder Beginner Contest 154 题解
人生第一场 AtCoder,纪念一下 话说年后的 AtCoder 比赛怎么这么少啊(大雾 AtCoder Beginner Contest 154 题解 A - Remaining Balls We ...
随机推荐
- 如何在 VSCode 中配置和编写 LINGO
目录 如何在 VSCode 中配置和编写 LINGO 安装 VSCode 扩展 LINGO 脚本文件与 runlingo 命令 LINGO 命令行交互和脚本文件 配置 Visual Stdio Cod ...
- Stirling-PDF 安装和使用教程
PDF (便携式文档格式) 目前已经成为了文档交换和存储的标准.然而,找到一个功能全面.安全可靠.且完全本地化的 PDF 处理工具并不容易.很多在线 PDF 工具存在隐私和安全风险,而桌面软件往往价格 ...
- VSCode 中 Markdown Preview Enhanced 插件利用 Chrome (Puppeteer) 导出 PDF 文件使用说明与问题解决
准备 预先安装好 Chrome 浏览器. 使用方法 右键选择 Chrome (Puppeteer). 设置 Puppeteer 通过 front-matter 即在 markdown 文档开头加上 y ...
- 福利来了!MoneyPrinterPlus可以自动配置环境和自动运行了
之前开源了MoneyPrinterPlus,可以实现批量混剪视频,一键生成视频和自动发布视频的功能. 但是经常会看到小伙伴在安装过程中遇到很多问题.所以这篇文章的目的就是告诉大家怎么使用MoneyPr ...
- ABP框架开发实例教程-生成数据库
因为用SQLSERVER数据库比较多,这里就以SQLSERVER2014为例,下面说一下生成步骤: 1.用VS2019打开生成的ABP框架源码的解决方案,先修改web.mvc.web.host两个项目 ...
- 阿里云Centos7 安装mysql5.7 报错:./mysqld: error while loading shared libraries: libaio.so.1: cannot open shared object file: No such file or directory
在阿里云服务器Centos7中安装mysql5.7,解压数据库初始化后,报错 ./mysqld: error while loading shared libraries: libaio.so.1: ...
- Centos 7 永久关闭防火墙
查看防火墙状态 systemctl status firewalld 出现:Active: inactive (dead),代表防火墙已关闭 临时关闭防火墙 重启后,防火墙会重新开启 systemct ...
- HTB- Archetype
端口扫描 nmap -sV -sT 10.129.1.1 smbclint smbclient -L 10.129.149.214 获取密码 smbclient //10.129.149.214/ba ...
- [rCore学习笔记 00]总览
写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 rCo ...
- 学习笔记--Java构造方法
Java构造方法 关于构造方法 构造方法又被称作:构造函数/构造器/Constructor 语法结构: [修饰符列表] 构造方法名(形式参数列表){ 构造方法体; } 对比普通方法语法结构 [修饰符列 ...