Problem
给你一张$n$个点,$m$条边的图,边有边权,点有点权。
现有$Q$个询问,每次询问从点$x$开始,只走边权小于$y$的边,能走到的点中点权第$k$大的点
Solution
这道题没有强制在线,所以直接想了一个简单的离线做法。
将询问按照y排序,边按照边权排序。
对每个并查集维护一棵权值线段树
将边按顺序一条一条加入,合并了两个并查集的同时合并权值线段树
至于查询,在权值线段树查询全局的k大就可以了。
不知道为什么大家都打的启发式合并+主席树
Code
1 |
|
机房最菜,没有之一。
给你一张$n$个点,$m$条边的图,边有边权,点有点权。
现有$Q$个询问,每次询问从点$x$开始,只走边权小于$y$的边,能走到的点中点权第$k$大的点
这道题没有强制在线,所以直接想了一个简单的离线做法。
将询问按照y排序,边按照边权排序。
对每个并查集维护一棵权值线段树
将边按顺序一条一条加入,合并了两个并查集的同时合并权值线段树
至于查询,在权值线段树查询全局的k大就可以了。
不知道为什么大家都打的启发式合并+主席树
1 | #include <bits/stdc++.h> |