NIKKEI Programming Contest 2019-2 Task D. Shortest Path on a Line
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的更多相关文章
- [AtCoder] NIKKEI Programming Contest 2019 (暂缺F)
[AtCoder] NIKKEI Programming Contest 2019 本来看见这一场的排名的画风比较正常就来补一下题,但是完全没有发现后两题的AC人数远少于我补的上一份AtCoder ...
- AtCoder NIKKEI Programming Contest 2019 C. Different Strokes (贪心)
题目链接:https://nikkei2019-qual.contest.atcoder.jp/tasks/nikkei2019_qual_C 题意:给出 n 种食物,Takahashi 吃下获得 a ...
- NIKKEI Programming Contest 2019 翻车记
A:签到. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> ...
- atcoder NIKKEI Programming Contest 2019 E - Weights on Vertices and Edges
题目链接:Weights on Vertices and Edges 题目大意:有一个\(n\)个点\(m\)条边的无向图,点有点权,边有边权,问至少删去多少条边使得对于剩下的每一条边,它所在的联通块 ...
- 【AtCoder】全国統一プログラミング王決定戦予選/NIKKEI Programming Contest 2019
感觉最近好颓,以后不能这么颓了,要省选了,争取省选之前再板刷一面ATC??? A - Subscribers 简单容斥 #include <bits/stdc++.h> #define f ...
- AtCoder NIKKEI Programming Contest 2019 E. Weights on Vertices and Edges (并查集)
题目链接:https://atcoder.jp/contests/nikkei2019-qual/tasks/nikkei2019_qual_e 题意:给出一个 n 个点 m 条边的无向图,每个点和每 ...
- [AtCoder] Yahoo Programming Contest 2019
[AtCoder] Yahoo Programming Contest 2019 很遗憾错过了一场 AtCoder .听说这场是涨分场呢,于是特意来补一下题. A - Anti-Adjacency ...
- AtCoder AISing Programming Contest 2019 Task D. Nearest Card Game
题目分析在代码注释里. int main() { #if defined LOCAL && !defined DUIPAI ifstream in("main.in" ...
- 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 ...
随机推荐
- delphi将字符串转换成stringlist
function StrToList(const sString, Token: string): TStringList;var sTmp: string; iPos: Integer; Tokle ...
- CF258B
CF258B 题意: 7个人在 $ [1,m] $ 区间内取数,求第一个人选的数的4和7的个数大于其他人的4和7个数总和的方案数. 解法: 要求输入的 $ m $ 可以很大,而且需要按位考虑每隔人的贡 ...
- Zookeeper系列(十一)zookeeper的Leader选举详解(核心之一)
作者:leesf 掌控之中,才会成功:掌控之外,注定失败. 出处:http://www.cnblogs.com/leesf456/p/6107600.html尊重原创,奇文共欣赏: 一.前言 前 ...
- 使用docker部署mysql主从复制集群
一.环境搭建 虚拟机环境:centos7 IP: 启动3个容器,一个是master,端口是3307,另外两个是slaver,端口是3308和3309 docker pull mysql:5.7 doc ...
- pycharm中模块不能导入的问题
在pycharm中发现模块老是导入不成功 只能以这样的映射的方式 现在才知道: 模块的标志符可以由字母.数字.下划线组成,但是, 不能以数字开头,如果在给python文件起名时,以数字开头是无法在py ...
- 性能分析 | Linux 内存占用分析
这篇博客主要介绍 linux 环境下,查看内存占用的两种方式:使用 ps,top等命令:查看/proc/[pid]/下的文件.文章简要介绍了命令的使用方法与一些参数意义,同时对/proc/[pid]/ ...
- 括号序列模型--序列dp--U86873 小Y的精灵国机房之旅
括号序列模型及解法 >Codeforces314E◦给定一个长度为n的仅包含左右括号和问号的字符串,将问号变成左括号或右括号使得该括号序列合法,求方案总数.◦例如(())与()()都是合法的括号 ...
- shiro中接入单点登录功能
最近新建的系统中使用了shiro,而shiro框架中包含登录认证和鉴权的功能,因为我们系统要统一接入公司内部的单点登录(isso)系统,所以通过isso的登录用户,需要在shiro中置为已认证,一下提 ...
- LC 781. Rabbits in Forest
In a forest, each rabbit has some color. Some subset of rabbits (possibly all of them) tell you how ...
- springMVC获取来访地址referer
@RequestMapping("publishPost.do") public String publishPost(@Valid @ModelAttribute Post po ...