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. Built-in COM has been disabled via a feature switch.

    .net 6.0 开始默认关闭com组件 使用时会出现以下信息 Built-in COM has been disabled via a feature switch. See https://aka ...

  2. k8s集群搭建及对一些组件的简单理解(一)

    背景 k8s的学习环境(用kubeadm方式搭建),我也搭过几次了,但都有点问题. 要么在云服务器上弄,这个的问题是就只有一台轻量服务器,只能搭个单节点的:后来买了一台便宜的,所以就有了两台,但是不在 ...

  3. C# Linq.FirstOrDefault、Linq.Where、Linq.AsParallel、List.Exists、List.Find、Dictionar.TryGetValue、HashSet.Contains 性能的比较

    今天我们来比较一下集合检索方法性能更优问题,测试代码 public class Entity { public int Id { get; set; } public int No { get; se ...

  4. springboot使用mail提示没有该类型的bean

    @Autowired private JavaMailSenderImpl javaMailSender; 自动注入时提示没有该类型的Bean. 原因 没有配置邮件发送相关的配置信息. spring: ...

  5. .NET 文件上传服务设计

    .NET文件上传服务设计 前言 在b站学习了一个后端小项目,然后发现这个文件上传设计还挺不错,来实现讲解一下. 项目结构如下: 基于策略+工厂模式实现文件上传服务 枚举 在Model层创建即可 pub ...

  6. 都是全志T113处理器,“-i”和“-S3”有什么区别?

    自9个月前,创龙科技"1片含税就79元"的全志T113-i双核ARM Cortex-A7@1.2GHz的工业核心板(SOM-TLT113)推出之后,不少嵌入式软硬件工程师.用户都咨 ...

  7. java --面试题大全

            J2EE面试题   文档版本号:V2.0                   2016年11月 目 录 1. Java基础部分 8 1.1. 一个".java"源文 ...

  8. Class 与 Style 如何动态绑定?

    Class 可以通过对象语法和数组语法进行动态绑定: 对象语法: <div v-bind:class="{ active: isActive, 'text-danger': hasEr ...

  9. var、let、const 区别?

    var 存在变量提升.let 只能在块级作用域内访问.const 用来定义常量,必须初始化,不能修改(对象特殊) 1.var[声明变量] var 没有块的概念,可以跨块访问,无法跨函数访问: 2.le ...

  10. input标签 只能输入纯数字

    <input type="number" pattern="number" onkeyup="value=value.replace(/[^\d ...