CF1580E Railway Construction
CF1580E Railway Construction
铁路系统中有 \(n\) 个车站和 \(m\) 条双向边,有边权,无重边。这些双向边使得任意两个车站互相可达。
你现在要加一些单向边 \((u,v,w)\) ,\(w\) 随便定,代价是 \(a_u\) ,使得从 \(1\) 号车站出发到每个车站都有至少两条边不相交的路线,并且最短路不改变。
由于不可控因素,\(a\) 序列会受到 \(q\) 次修改,每次让 \(a_u \leftarrow a_u+x\) ,并求当前的最小代价。
\(1\le n,m,q \le 3\cdot 10^5,1\le a_i\le 10^9, 1\le x\le 4\cdot 10^8\) 。
Solution
首先从 \(1\) 出发跑最短路,显然非最短路边是无用的。因此建出最短路图,我们在 DAG 上讨论问题。
可以发现,将所有点按照 \(\text{dis}\) 排序是合法的拓扑序,而只要有一个点入度 \(\ge 2\) ,那么它已经满足要求了。
所以,问题转化为将所有入度 \(=1\) 的点新连一条边,那么肯定挑拓扑序在它之前的 \(a\) 最小的点。
因此在拓扑序上维护前缀 \(a\) 最小值和次小值的点即可,暴力复杂度 \(\mathcal O(nq)\) 。
考虑优化,我们将所有改变前缀最小/次小的位置丢进一个 set 里,显然二元组 (最小值,次小值) 构成一个个区间。倒着处理询问(即每次 \(a_u\) 变小):
\(u\) 是这个区间的最小值
可以发现它对区间不会造成任何影响,只对答案产生了影响;求对答案影响的部分,可以用一棵线段树去维护;
\(u\) 是这个区间的次小值
注意到不同区间的次小值一定不一样(这个显然),因此只有撑死 \(1\) 个区间符合该条件,暴力修改即可;
\(u\) 既不是这个区间的最小值,也不是次小值
类比颜色段均摊的思想,它修改的区间端点会从 set 里 erase 掉,同时把它加进 set 里,而 set 里的端点个数总计是 \(\mathcal O(n+q)\) 的,因此直接暴力做即可。
总时间复杂度 \(\mathcal O(m\log m+(n+q)\log n)\) 。
CF1580E Railway Construction的更多相关文章
- Construction of Primitives in Open Cascade
Construction of Primitives in Open Cascade eryar@163.com 一.创建基本图元 Making Primitives 将用到如下的类创建基本图元,包括 ...
- 数据结构 - Codeforces Round #353 (Div. 2) D. Tree Construction
Tree Construction Problem's Link ------------------------------------------------------------------- ...
- BZOJ 2080: [Poi2010]Railway 双栈排序
2080: [Poi2010]Railway Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 140 Solved: 35[Submit][Statu ...
- UVa 10720 - Graph Construction(Havel-Hakimi定理)
题目链接: 传送门 Graph Construction Time Limit: 3000MS Memory Limit: 65536K Description Graph is a coll ...
- Codeforces 335C Sorting Railway Cars
time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...
- UVa1515 Pool construction(最小割)
题目 Source https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_pr ...
- CF#335 Sorting Railway Cars
Sorting Railway Cars time limit per test 2 seconds memory limit per test 256 megabytes input standar ...
- construction of tuples containing 0 or 1 items
[construction of tuples containing 0 or 1 items] the syntax has some extra quirks to accommodate the ...
- STL---Codeforces675D Tree Construction(二叉树节点的父亲节点)
Description During the programming classes Vasya was assigned a difficult problem. However, he doesn ...
随机推荐
- final,finally和finalize的区别
package com.heima.test; public class Test1 { /** * * A:面试题1 * final,finally和finalize的区别 * fina ...
- 关于Symbol.iterator 学习笔记
1.可以部署在对象上的一个遍历器 2. 遍历器是一个函数,需要返回一个含有一个next 方法的对象 const likeArray = {0:'a', 1: 'b', 2: 'c',3: 'd'. l ...
- js获取url查询字符串参数
最近看js高级程序设计 对其中查询字符串参数的获得重新写了,当传递一个完整的URL的时候对查询字符串的提取 function getQueryArgs(){ var qs = (location.se ...
- DOCTYPE(⽂档类型) 的作⽤
DOCTYPE是HTML5中一种标准通用标记语言的文档类型声明,它的目的是告诉浏览器(解析器)应该以什么样(html或xhtml)的文档类型定义来解析文档,不同的渲染模式会影响浏览器对 CSS 代码甚 ...
- Java 8 学习记录
Java 8 学习记录 官方文档 https://docs.oracle.com/javase/8/ https://docs.oracle.com/javase/8/docs/index.html ...
- Go xmas2020 学习笔记 08、Functions, Parameters & Defer
08-Functions, Parameters. functions. first class. function signatures. parameter. pass by value. pas ...
- Docker安装Opensips2.4实现内网sip电话通讯
使用说明 这是基于官方opensips 2.4镜像添加了mysql模块以及rest_client模块制作的镜像,用此镜像可以连接mysql控制opensip注册用户.查看通话记录以及通话时对INVIT ...
- 2021.11.09 P3426 [POI2005]SZA-Template(KMP+DP)
2021.11.09 P3426 [POI2005]SZA-Template(KMP+DP) https://www.luogu.com.cn/problem/P3426 题意: 你打算在纸上印一串字 ...
- 2021.08.09 P7238 迷失森林(树的直径)
2021.08.09 P7238 迷失森林(树的直径) P7238 「DCOI」迷失森林 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 重点: 1.树的直径两种求法:两次dfs.树 ...
- 你不知道的下划线属性-text-decoration
大家好,我是半夏,一个刚刚开始写文的沙雕程序员.如果喜欢我的文章,可以关注 点赞 加我微信:frontendpicker,一起学习交流前端,成为更优秀的工程师-关注公众号:搞前端的半夏,了解更多前端知 ...