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 ...
 
随机推荐
- JS 用状态机的思想看Generator之基本语法篇
			
前言 最近学习了阮一峰老师的<ECMAScript 6 入门>里的Generator相关知识,以及<你不知道的JS>中卷的异步编程部分.同时在SegmentFault问答区看到 ...
 - Python使用函数模拟“汉诺塔”过程
			
运行效果: 源代码: 1 # -*- coding:utf-8 -*- 2 ##汉诺塔游戏开始 3 _times=0 #用于统计移动次数 4 def hannuota(nlist,mfrom,mpas ...
 - 文件上传——IIS6.0解析漏洞
			
介绍 IIS6.0漏洞可分为目录漏洞和文件漏洞 目录漏洞 访问*.asp格式命令的文件夹下的文件,都会被当成asp文件执行 文件漏洞 畸形文件命名 123.asp -> 123.asp;.txt ...
 - Vue路由跳转时修改页面标题
			
1 在main.js中添加如下代码 import Vue from 'vue' import App from './App.vue' import router from './router' // ...
 - SpringMVC-注解@RequestParam
			
当请求的参数名称与Controller的业务方法不一致时,就需要通过@RequestParam注解进行显示的绑定 1.value:映射参数 @RequestMapping("/report1 ...
 - linux centos 8.2 安装docker
			
1 使用yum -y install docker安装后启动docker提示Failed to start docker.service: Unit docker.service not found. ...
 - springboot项目找不到符号问题以及模块聚合项目maven插件使用的相关问题
			
问题如图 更换maven,清空缓存重新导入依赖依然无效后 解决方法: 方式一:删除项目中.idea文件夹,重新打开项目,选中jdk版本 ,重新导入依赖即可. 最近又遇到找不到符号问题,本地运行没问题, ...
 - 自己写的一个Hash文件校验软件
			
原因 学校网络安全课讲到了Hash函数,老师提了一句上机操作的时候可以用自己的写的文件校验软件,所以我干脆就自己写一个. 说明 支持算法 MD5 SHA1 SHA256 SHA512 SHA384 为 ...
 - vite创建vue3+ts项目流程
			
vite+vue3+typescript搭建项目过程 vite和vue3.0都出来一段时间了,尝试一下搭vite+vue3+ts的项目 相关资料网址 vue3.0官网:https://v3.vue ...
 - 攻防世界-MISC:simple_transfer
			
这是攻防世界高手进阶区的题目,题目如下: 点击下载附件一,得到一个流量包,用wireshark打开搜索flag无果,无奈跑去查看WP,说是先查看一下协议分级,但是并没有像WP所说的协议的字节百分比占用 ...