Observations


从 $1$ 到 $N$ 的最短路一定是不走回头路的。所谓走回头路是指从序号大的点走到序号小的点。

证明:首先,任意从 $1$ 到 $N$ 的路径的最后一步一定不是回头路。假设存在一条从 $1$ 到 $N$ 的最短路走了回头路,并设这条路最后一次回头是从 $u$ 到 $v$ 且从 $v$ 开始直到终点经过的点依次是 $v = v_0, v_1, \dots v_k = N$。我们有 $v < u < N$,$v = v_0 < v_1 < v_2 <\dots < v_k = N$ 且 $v_i \ne u$。设 $v_i < u$ 而 $v_{i+1} > u$ 则必然存在边 $(u, v_{i+1})$ 和边 $(v_i, v_{i+1})$ 长度相等,因此走 $u, v_{i+1}, \dots, v_{k}$ 更优。矛盾!

为了便于描述,以下用 $(u, v, C)$ 表示连接 $u, v$,长为 $C$ 的无向边,用 $(u \to v, C)$ 表示从 $u$ 到 $v$ 长为 $c$ 的有向边。

从上述证明可以得出推论:将原无向图按下述方式改造成有向图,从 $1$ 到 $N$ 的最短路长度不变:
以下设 $1 \le u < v \le N$。将原图中的无向边 $(u, v, C)$ 删除,加入有向边 $(u \to v, C)$。
再任意加入长度非负的回头边。

考虑上述有向图的一种特殊情形:对于 $i = i, 2, \dots, N$,加上长度为 $0$ 的回头边 $(i \to i - 1, 0)$。
注意到此时对于一组有向边 $(s \to t, C_i)$,$L_i \le s < t \le R_i$,只保留 $(L_i \to R_i, C_i)$ 仍能保持从 $1$ 到 $N$ 的最短路长度不变。

NIKKEI Programming Contest 2019-2 Task D. Shortest Path on a Line的更多相关文章

  1. [AtCoder] NIKKEI Programming Contest 2019 (暂缺F)

    [AtCoder] NIKKEI Programming Contest 2019   本来看见这一场的排名的画风比较正常就来补一下题,但是完全没有发现后两题的AC人数远少于我补的上一份AtCoder ...

  2. AtCoder NIKKEI Programming Contest 2019 C. Different Strokes (贪心)

    题目链接:https://nikkei2019-qual.contest.atcoder.jp/tasks/nikkei2019_qual_C 题意:给出 n 种食物,Takahashi 吃下获得 a ...

  3. NIKKEI Programming Contest 2019 翻车记

    A:签到. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> ...

  4. atcoder NIKKEI Programming Contest 2019 E - Weights on Vertices and Edges

    题目链接:Weights on Vertices and Edges 题目大意:有一个\(n\)个点\(m\)条边的无向图,点有点权,边有边权,问至少删去多少条边使得对于剩下的每一条边,它所在的联通块 ...

  5. 【AtCoder】全国統一プログラミング王決定戦予選/NIKKEI Programming Contest 2019

    感觉最近好颓,以后不能这么颓了,要省选了,争取省选之前再板刷一面ATC??? A - Subscribers 简单容斥 #include <bits/stdc++.h> #define f ...

  6. AtCoder NIKKEI Programming Contest 2019 E. Weights on Vertices and Edges (并查集)

    题目链接:https://atcoder.jp/contests/nikkei2019-qual/tasks/nikkei2019_qual_e 题意:给出一个 n 个点 m 条边的无向图,每个点和每 ...

  7. [AtCoder] Yahoo Programming Contest 2019

    [AtCoder] Yahoo Programming Contest 2019   很遗憾错过了一场 AtCoder .听说这场是涨分场呢,于是特意来补一下题. A - Anti-Adjacency ...

  8. AtCoder AISing Programming Contest 2019 Task D. Nearest Card Game

    题目分析在代码注释里. int main() { #if defined LOCAL && !defined DUIPAI ifstream in("main.in" ...

  9. Sumitomo Mitsui Trust Bank Programming Contest 2019 Task F. Interval Running

    Link. There is a nice approach to this problem that involves some physical insight. In the following ...

随机推荐

  1. 深度学习笔记(十三)YOLO V3 (Tensorflow)

    [代码剖析]   推荐阅读! SSD 学习笔记 之前看了一遍 YOLO V3 的论文,写的挺有意思的,尴尬的是,我这鱼的记忆,看完就忘了  于是只能借助于代码,再看一遍细节了. 源码目录总览 tens ...

  2. Linux+CLion+树莓派远程编译时,Cmake编译出现undefined reference to 'pthread_create'的解决办法

    在CLion中开发讯飞的linux语音库时编译出现以下问题: undefined reference to 'pthread_create' CLion的cmake配置:修改CMakeLists.tx ...

  3. CF860E Arkady and a Nobody-men

    CF860E Arkady and a Nobody-men 类比LNOI2014 LCA那个题,其实树剖可以过....(用树状数组区间加区间求和更快!) 巧妙的nlogn做法是: blog~ (其实 ...

  4. 使用git Bash Here 绑定账号密码错误后 无法自动重新绑定

    新安装的git 要打开gitbash 运行下面两个命令:1 git config --global user.name "Your Name"2 git config --glob ...

  5. Zookeeper系列(十三)Zookeeper的请求处理

    作者:leesf    掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6179118.html尊重原创,奇文共欣赏: 一.前言 在 ...

  6. word2vec原理与代码

    目录 前言 CBOW模型与Skip-gram模型 基于Hierarchical Softmax框架的CBOW模型 基于Negative Sampling框架的CBOW模型 负采样算法 结巴分词 wor ...

  7. 实时更新DataGridView 合计值

    public partial class Form1 : Form { public Form1() { InitializeComponent(); dataGridView1.DataSource ...

  8. C++ STL——类型转换

    目录 一 类型转换 注:原创不易,转载请务必注明原作者和出处,感谢支持! 注:内容来自某培训课程,不一定完全正确! 一 类型转换 类型转换的含义是通过改变一个变量的类型为别的类型从而改变变量的表示方式 ...

  9. AVQueuePlayer

    想要视频一个接一个的无缝连续播放么? 还在用mpmovieplayercontroller么?out了! 介绍一个可以实现无缝连续播放视频的东西-------AVQueuePlayer ! AVQue ...

  10. javascript 数据分组

    一.静态数据 [ {"id":"1001","name":"值1","value":"11 ...