Solution -「Gym 101630J」Journey from Petersburg to Moscow
\(\mathscr{Description}\)
Link.
给定含有 \(n\) 个点 \(m\) 条边的带权无向图,一条路径的长度定义为其中前 \(k\) 大的边权和,求 \(1\) 到 \(n\) 的最短路。
\(n,m,k\le3\times10^3\)。
\(\mathscr{Solution}\)
模拟赛题,我对放 WQS 过了但其实大样例都没有凸性的造数据人表示 。
先把正常的最短路作为答案上界,接下来我们只需要考虑路径中包含至少 \(k\) 条边的情况。算是一种构造,枚举第 \(k\) 大的边权 \(w_0\),令所有边权减去 \(w_0\) 并向 \(0\) 取 \(\max\),用此时最短路的长度 \(+kw_0\) 更新答案。
理解:大于 \(0\) 的边相当于这条边会加入答案贡献,那么超过 \(k\) 条一定不优;小于 \(k\) 条虽然不合法,但是一定会被 \(w_0\) 变小的方案覆盖掉。
最终复杂度就是 \(\mathcal O(m^2\log m)\) 的。
\(\mathscr{Code}\)
/*+Rainybunny+*/
#include <bits/stdc++.h>
#define rep(i, l, r) for (int i = l, rep##i = r; i <= rep##i; ++i)
#define per(i, r, l) for (int i = r, per##i = l; i >= per##i; --i)
typedef long long LL;
typedef std::pair<LL, int> PLI;
typedef std::pair<int, int> PII;
#define fi first
#define se second
const int MAXN = 3e3, MAXM = 3000;
const LL LINF = 1ll << 60;
int n, m, K, S, T, eu[MAXM + 5], ev[MAXM + 5], ew[MAXM + 5];
std::vector<PII> adj[MAXN + 5];
LL dis[MAXN + 5];
inline void dijkstra(const int dlt) {
static std::priority_queue<PLI, std::vector<PLI>, std::greater<PLI> > heap;
rep (i, 1, n) dis[i] = LINF;
heap.push({ dis[S] = 0, S });
while (!heap.empty()) {
PLI p(heap.top()); heap.pop();
if (p.fi != dis[p.se]) continue;
for (auto& [v, w]: adj[p.se]) {
int nw = std::max(w - dlt, 0);
if (dis[v] > nw + p.fi) {
heap.push({ dis[v] = nw + p.fi, v });
}
}
}
}
int main() {
// freopen("fee.in", "r", stdin);
// freopen("fee.out", "w", stdout);
std::ios::sync_with_stdio(false), std::cin.tie(0);
std::cin >> n >> m >> K, S = 1, T = n;
rep (i, 1, m) {
std::cin >> eu[i] >> ev[i] >> ew[i];
adj[eu[i]].emplace_back(ev[i], ew[i]);
adj[ev[i]].emplace_back(eu[i], ew[i]);
}
dijkstra(0);
LL ans = dis[T];
rep (i, 1, m) {
dijkstra(ew[i]);
ans = std::min(ans, dis[T] + 1ll * ew[i] * K);
}
std::cout << ans << '\n';
return 0;
}
Solution -「Gym 101630J」Journey from Petersburg to Moscow的更多相关文章
- Solution -「Gym 102979E」Expected Distance
\(\mathcal{Description}\) Link. 用给定的 \(\{a_{n-1}\},\{c_n\}\) 生成一棵含有 \(n\) 个点的树,其中 \(u\) 连向 \([1, ...
- Solution -「Gym 102979L」 Lights On The Road
\(\mathcal{Description}\) Link. 给定序列 \(\{w_n\}\),选择 \(i\) 位置的代价为 \(w_i\),要求每个位置要不被选择,要不左右两个位置至少被 ...
- Solution -「Gym 102956F」Find the XOR
\(\mathcal{Description}\) Link. 给定 \(n\) 个点 \(m\) 条边的连通无向图 \(G\),边有边权.其中 \(u,v\) 的距离 \(d(u,v)\) ...
- Solution -「Gym 102956B」Beautiful Sequence Unraveling
\(\mathcal{Description}\) Link. 求长度为 \(n\),值域为 \([1,m]\) 的整数序列 \(\lang a_n\rang\) 的个数,满足 \(\not\ ...
- Solution -「Gym 102956F」Border Similarity Undertaking
\(\mathcal{Description}\) Link. 给定一张 \(n\times m\) 的表格,每个格子上写有一个小写字母.求其中长宽至少为 \(2\),且边界格子上字母相同的矩 ...
- Solution -「Gym 102956A」Belarusian State University
\(\mathcal{Description}\) Link. 给定两个不超过 \(2^n-1\) 次的多项式 \(A,B\),对于第 \(i\in[0,n)\) 个二进制位,定义任意一个二元 ...
- Solution -「Gym 102798I」Sean the Cuber
\(\mathcal{Description}\) Link. 给定两个可还原的二阶魔方,求从其中一个状态拧到另一个状态的最小步数. 数据组数 \(T\le2.5\times10^5\). ...
- Solution -「Gym 102798K」Tree Tweaking
\(\mathcal{Description}\) Link. 给定排列 \(\{p_n\}\),求任意重排 \(p_{l..r}\) 的元素后,将 \(\{p_n\}\) 依次插入二叉搜索树 ...
- Solution -「Gym 102798E」So Many Possibilities...
\(\mathcal{Description}\) Link. 给定非负整数序列 \(\{a_n\}\) 和 \(m\),每次随机在 \(\{a\}\) 中取一个非零的 \(a_i\)(保证存 ...
- Solution -「Gym 102759I」Query On A Tree 17
\(\mathcal{Description}\) Link. 给定一棵含 \(n\) 个结点的树,结点 \(1\) 为根,点 \(u\) 初始有点权 \(a_u=0\),维护 \(q\) 次 ...
随机推荐
- 在使用asm包进行动态类加载的时候的打包问题
如图所示,开发时使用的jdk包下面的asm包,在进行打包时提示asm包不存在,打包方式使用如下: 目前提供两种解决方案: 1:修改打包方式,将jdk的包也打进去: <plugin> < ...
- 3.19 Linux命令的执行过程是怎样的?(新手必读)
前面讲过,在 Linux 系统中"一切皆文件",Linux 命令也不例外.那么,当编辑完成 Linux 命令并回车后,系统底层到底发生了什么事情呢? 简单来说,Linux 命令的执 ...
- 定制jekins-slave-jnlp镜像封装docker和kebectl命令实现pipline
基于官方:jenkins/inbound-agent:latest DockerHub成品: docker pull svipghy/jenkins-jnlp-slave:v1 Dockerfile ...
- html JavaScript 点击图片放大,点击图片缩小
参考地址 https://www.jq22.com/webqd7166 可以下载demo 然后对着改 我的是这么用的 前置,先把图片 class 自定义设置 item_img $.fn.ImgZoom ...
- 鸿蒙NEXT开发案例:计数器
[引言](完整代码在最后面) 本文将通过一个简单的计数器应用案例,介绍如何利用鸿蒙NEXT的特性开发高效.美观的应用程序.我们将涵盖计数器的基本功能实现.用户界面设计.数据持久化及动画效果的添加. [ ...
- 浅析Flie类getAbsolutePath()方法
开发中,常常需要上传文件,并将文件存于远程服务器(如minio)或者本地,当存于本地时对存储路径的指定是常见的问题. 当然,你可以在本地写死静态资源路径,如"D:\static\fileUp ...
- RabbitMQ的四种交换机类型
前言 这是相关技能的详解系列,是将东西整理归纳总结,系列的进行记录与分享,这种方式更有完善性,更能成体系的学习一个技能,方便我们掌握他,这也是我们这种系列的目标,希望在跟着学习了解完这个系列后,就能将 ...
- S2P销讯通-主数据对于客户关系管理系统的重要性
由于业务发展,各大企业的业务系统经历了从无到有,从简单到复杂,从而形成了一个又一个的业务系统,比如OA.HR.CRM.ERP等等. 主数据在客户关系管理系统(CRM)中扮演着至关重要的角色.主数据是指 ...
- Sealos Devbox 使用教程:使用 Cursor 一键搞定数据库开发环境
"诶,你这前后端开发环境怎么搭建这么快?" "用了 Devbox 啊." "不是吧,你怎么在 Cursor 里连接开发环境的数据库,这些都配好了?&q ...
- React 的界面与数据分离问题
React 生态庞大,没办法只能学一点.第一段学完就有一个根本性的问题了:它竟然把数据.业务逻辑和界面混在一起,组件变成了有"业务状态"的组件,这就意味着UI和业务绑定了.而这种糟 ...