首页
Python
Java
IOS
Andorid
NodeJS
JavaScript
HTML5
【
树上的路径 BZOJ 3784
】的更多相关文章
树上的路径 BZOJ 3784
树上的路径 [问题描述] 给定一个N个结点的树,结点用正整数1..N编号.每条边有一个正整数权值.用d(a,b)表示从结点a到结点b路边上经过边的权值.其中要求a<b.将这n*(n-1)/2个距离从大到小排序,输出前M个距离值. [输入格式] 第一行两个正整数N,M 下面N-1行,每行三个正整数a,b,c(a,b<=N,C<=10000).表示结点a到结点b有一条权值为c的边. [输出格式] 共M行,如题所述. [样例输入] 5 10 1 2 1 1 3 2 2 4 3 2 5 4 [样…
bzoj 3784: 树上的路径 堆维护第k大
3784: 树上的路径 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 88 Solved: 27[Submit][Status][Discuss] Description 给定一个N个结点的树,结点用正整数1..N编号.每条边有一个正整数权值.用d(a,b)表示从结点a到结点b路边上经过边的权值.其中要求a<b.将这n*(n-1)/2个距离从大到小排序,输出前M个距离值. Input 第一行两个正整数N,M 下面N-1行,每行三个正整数a,…
【BZOJ-3784】树上的路径 点分治 + ST + 堆
3784: 树上的路径 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 462 Solved: 153[Submit][Status][Discuss] Description 给定一个N个结点的树,结点用正整数1..N编号.每条边有一个正整数权值.用d(a,b)表示从结点a到结点b路边上经过边的权值.其中要求a<b.将这n*(n-1)/2个距离从大到小排序,输出前M个距离值. Input 第一行两个正整数N,M 下面N-1行,每行三个正整数a,…
codevs 2756树上的路径
题意: 2756 树上的路径 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给出一棵树,求出最小的k,使得,且在树中存在路径P,使得k>= S 且 k <=E. (k为路径P上的边的权值和) 输入描述 Input Description 第一行给出N,S,E,N代表树的点数,S,E如题目描述一致 下面N-1行给出这棵树的相邻两个节点的边及其权值W 输出描述 Output Description 输出一个整数k…
【BZOJ3784】树上的路径 点分治序+ST表
[BZOJ3784]树上的路径 Description 给定一个N个结点的树,结点用正整数1..N编号.每条边有一个正整数权值.用d(a,b)表示从结点a到结点b路边上经过边的权值.其中要求a<b.将这n*(n-1)/2个距离从大到小排序,输出前M个距离值. Input 第一行两个正整数N,M 下面N-1行,每行三个正整数a,b,c(a,b<=N,C<=10000).表示结点a到结点b有一条权值为c的边. Output 共M行,如题所述. Sample Input 5 10 1 2 1…
Codevs 2756 树上的路径
2756 树上的路径 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给出一棵树,求出最小的k,使得,且在树中存在路径P,使得k>= S 且 k <=E. (k为路径P上的边的权值和) 输入描述 Input Description 第一行给出N,S,E,N代表树的点数,S,E如题目描述一致 下面N-1行给出这棵树的相邻两个节点的边及其权值W 输出描述 Output Description 输出一个整数k,表示…
BZOJ 3784: 树上的路径
Description 问一棵树上前 \(k\) 大路径的边权. Sol 边分治. 非常感谢数据没有菊花图. 为了写写边分治试试然后就开了这道题. 边分治非常好想,选一条重边,分成两部分,然后分别求最大值,对每个重边建一个堆维护一下,全局堆里存答案. rebuild好像写的有问题啊qwq...疯狂RE不止...最后不管了,直接不重建树也能A... rebuild我就是想的将他建成二叉树的样子,每个点的度数不超过3或4差不多就可以了. Code /*************************…
BZOJ.3784.树上的路径(点分治 贪心 堆)
BZOJ \(Description\) 给定一棵\(n\)个点的带权树,求树上\(\frac{n\times(n-1)}{2}\)条路径中,长度最大的\(m\)条路径的长度. \(n\leq50000,\ m\leq\min(3\times10^5,\frac{n\times(n-1)}{2})\). \(Solution\) 利用 点分治可以处理出树上所有路径 的性质,在每次点分治处理子树时,我们把当前根\(root\)和访问到的点\(x\)依次存到同一个数组里,把存下来的\(dis(x,r…
bzoj 3784: 树上的路径【点分治+st表+堆】
参考:https://www.cnblogs.com/CQzhangyu/p/7071477.html 神奇的点分治序(或者叫点剖?).就是把点分治扫过的点依次放进队列里,然后发现,对于每一棵树摊到序列上,每个点的值v是重心到这个点的距离,那么对序列上的每个点定义l为这个子树重心在序列上的位置,r为在这个重心下的当前扫的子树的前一棵被扫过的子树(天啊我在说什么),所以当前点的v+当前点的(l,r)中最大的v值就是以当前的重心为转折点接起来的两条路径,因为是r前一棵子树不会重复也不会出现计算两边同…
BZOJ 3784: 树上的路径 点分治+二分+set
很容易想出二分这个思路,但是要想办法去掉一个 $log$. 没错,空间换时间. 双指针的部分错了好几次~ Code: #include <set> #include <queue> #include <cstdio> #include <vector> #include <algorithm> #define N 2000003 #define ll long long #define setIO(s) freopen(s".in&qu…