【BZOJ 3514】Codechef MARCH14 GERALD07 加强版
题意
\(n\) 个点 \(m\) 条边的无向图,\(k\) 次询问保留图中编号在 \([l,r]\) 的边的时候图中的联通块个数。强制在线。
\(n,m,k\le 2\times 10^5\)
题解
LCT 练习题,和这题有得一比
对于一组询问 \(l,r\),考虑每一条编号在 \([l,r]\) 的编号为 \(i\) 的边 \((u,v)\) 什么时候会造成贡献:不加在 \([1,l-1]\) 的边,从小到大加入编号在 \([l,i-1]\) 的边,\(u\) 和 \(v\) 在两个不同的连通块中。
那怎么判断加入这条边前, \(u,v\) 是否在两个不同的连通块中?考虑先不删编号在 \([1,l-1]\) 的边,找一条 \(u,v\) 两点间编号最小的边的编号最大的路径,若这条路径上编号最小的边的编号\(\ge l\),则 \(u,v\) 在同一连通块中,否则在不同连通块中。
问题就在于如何求这条路径,当然我们只需要这条路径上编号最小的边的编号。
这个可以用经典的贪心 + LCT。用一棵 LCT 维护动态 MST,按编号从小到大依次把边加入 LCT,若加边前两端已经连通,则取这两点在 MST 上的路径上编号最小的一条边,把它删掉换成现在加入的这条边即可。记录一下这条边换掉的边的编号 \(lst_i\)。若加边前两端不连通,则换掉的边的编号记为 \(0\)。
这样就求出了每条边在加入前,其两端 \(u,v\) 是否在不同的连通块中。
若加入一条边前,其两端点 \(u,v\) 不在同一连通块中,则加入这条边后连通块数 \(-1\)。
则询问的答案就是 \(n - \sum\limits_{i=l}^r [lst_i<l]\),主席树维护即可。
【BZOJ 3514】Codechef MARCH14 GERALD07 加强版的更多相关文章
- BZOJ 3514: Codechef MARCH14 GERALD07加强版( LCT + 主席树 )
从左到右加边, 假如+的边e形成环, 那么记下这个环上最早加入的边_e, 当且仅当询问区间的左端点> _e加入的时间, e对答案有贡献(脑补一下). 然后一开始是N个连通块, 假如有x条边有贡献 ...
- BZOJ 3514: Codechef MARCH14 GERALD07加强版 [LCT 主席树 kruskal]
3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 1312 Solved: 501 ...
- [BZOJ 3514]Codechef MARCH14 GERALD07加强版 (CHEF AND GRAPH QUERIES)
[BZOJ3514] Codechef MARCH14 GERALD07加强版 (CHEF AND GRAPH QUERIES) 题意 \(N\) 个点 \(M\) 条边的无向图,\(K\) 次询问保 ...
- BZOJ 3514 Codechef MARCH14 GERALD07加强版
题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=3514 题意:给出一个图m条边.每次询问只加入编号在区间[L,R]之内的边有多少连通 ...
- BZOJ 3514: Codechef MARCH14 GERALD07加强版(LCT + 主席树)
题意 \(N\) 个点 \(M\) 条边的无向图,询问保留图中编号在 \([l,r]\) 的边的时候图中的联通块个数. \(K\) 次询问强制在线. \(1\le N,M,K \le 200,000\ ...
- 【刷题】BZOJ 3514 Codechef MARCH14 GERALD07加强版
Description N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. Input 第一行四个整数N.M.K.type,代表点数.边数.询问数以及询问是否加密. 接下来 ...
- BZOJ 3514 Codechef MARCH14 GERALD07加强版 Link-Cut-Tree+划分树
题目大意: 给定n个点m条边的无向图.求问当图中仅仅有[编号在[l,r]区间内]的边存在时图中的联通块个数 强制在线 注意联通块是指联通了就是同一块,不是Tarjan求的那种块 看到这题的那一刻我就想 ...
- BZOJ 3514: Codechef MARCH14 GERALD07加强版 (LCT维护最大生成树+主席树)
题意 给出nnn个点,mmm条边.多次询问,求编号在[l,r][l,r][l,r]内的边形成的联通块的数量,强制在线. 分析 LCTLCTLCT维护动态最大生成树,先将每条边依次加进去,若形成环就断掉 ...
- 【BZOJ-3514】Codechef MARCH14 GERALD07加强版 LinkCutTree + 主席树
3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 1288 Solved: 490 ...
- 【LCT+主席树】BZOJ3514 Codechef MARCH14 GERALD07加强版
3514: Codechef MARCH14 GERALD07加强版 Time Limit: 60 Sec Memory Limit: 256 MBSubmit: 2023 Solved: 778 ...
随机推荐
- python基础知识(函数)
创建函数 def 函数名(可以选参数): 可选参数 ''' ''' 用三引号括起来的注释 说明功能和参数信息 可选参数指定函数体 执行函数程序代码 创建一个空函数 def empty(): p ...
- Linux下中文乱码
Linux下中文乱码 修改mysql配置文件,centeros下 配置文件在 /etc/my.cnf vi /etc/my.cnf 在[mysqld]段下添加 character-set-server ...
- jQuery之克隆事件--clone()与clone(true)区别
clone()与clone(true)同为克隆 clone()表示复制标签本身, clone(true)会将标签绑定的事件一起复制 来看案例: <!DOCTYPE html> <ht ...
- vue 新闻列表滚动效果
效果如下: <template> <div> <div class="scroll-wrap"> <ul class="scro ...
- PTA (Advanced Level)1077.Kuchiguse
The Japanese language is notorious for its sentence ending particles. Personal preference of such pa ...
- 【转帖】Windows与Linux系统下的库介绍
Windows与Linux系统下的库介绍 http://embeddedlinux.org.cn/emb-linux/entry-level/200903/12-553.html 库的定义 库文件是一 ...
- Excel 下来公式 内容却一样
首先我们打开我们电脑里面的excel2007的软件 我们随便输入一点输入,进行公式计算 我们在上边输入=A1+B1,就能算出这个的结果 我们把上边的公式算好了,点击下拉试试 我们发现虽 ...
- CentoS里Tomcat端口开放
1.发现安装好tomcat后,发现无法访问tomcat首页,后来发现防火墙没有开放8080端口. 需注意的是:CentOS 7防火墙换用Friewalld了,所以要用以下命令将端口号加进防火墙: fi ...
- Hadoop集群搭建-02安装配置Zookeeper
Hadoop集群搭建-05安装配置YARN Hadoop集群搭建-04安装配置HDFS Hadoop集群搭建-03编译安装hadoop Hadoop集群搭建-02安装配置Zookeeper Hado ...
- better-scroll踩坑合集
better-scroll踩坑合集:https://www.jianshu.com/p/6338a8033281