首页 > 其他分享 >Luogu P4178 Tree

Luogu P4178 Tree

时间:2023-01-02 16:46:47浏览次数:56  
标签:le Luogu top Tree P4178 Dis

Luogu P4178 Tree

难度:省选/NOI-
标签:点分治
\(\mathtt{blog}\)


\(n\) 个点的树,边 \((u_i,v_i)\) 有边权 \(w_i\),询问距离 \(\le k\) 的点对数量。

数据范围:\(n\le 4\times10^4,1\le w_i\le10^3,1\le k_i\le 2\times10^4\)。


这里只讲 Calc 操作的实现方法:

发现经过根节点的路径都具有一个性质 \(Dis_{u,v}=Dis_{u,G}+Dis_{G,v}(top_u\not=top_v)\),\(G\) 为根节点,\(top_x\) 为 \(x\) 结点在子树中除根节点最靠上的祖先。便可以遍历一遍子树求出 \(Dis_{x,G}\) 和 \(top_x\)。
对于 \(\le k\),选择对 \(Dis\) 排序,用 \(l,r\) 指针维护当下界是 \(Dis_{l,G}\) 时 \(Dis_{G,r}\) 中 \(r\) 的上界,若 \(Dis_{G,l}+Dis{G,r}>k_i\),则 \(r\gets r-1\);同理,若 \(\le k\),则答案就会加上 \(r-l-cnt_{top_l,l+1\sim r}\),然后 \(l\gets l+1\),\(cnt_{c,x\sim y}\) 为 \(i=[x,y]\) 中 \(top_i=c\) 的数量,因为要去掉在同一个子树内的结点数量,\(cnt\) 数组维护不阐述,实现见 \(\mathtt{Code}\)。

因为带有排序多一个 \(\log\) 时间复杂度 \(O(n\log^2n)\)。


\(\mathtt{Code}\)



标签:le,Luogu,top,Tree,P4178,Dis
From: https://www.cnblogs.com/lhzQAQ/p/17020082.html

相关文章

  • POJ 2114 Boatherds / Luogu P3806 【模板】点分治1
    POJ2114Boatherds/LuoguP3806【模板】点分治1难度:\(\mathtt{?}\)/省选/NOI-标签:点分治\(\mathtt{blog}\)\(n\)个点的树,边\((u_i,v_i)\)有边权\(w_i\),\(m\)......
  • Potree 002 Desktop开发环境搭建
    1、工程创建我们使用VisualStudio2022开发,把下载好后的PotreeDesktop源码添加到VisualStudio中。打开VisualStudio2022,新建Asp.NetCore空项目,如下图所示。点击下......
  • 使用 Link Cut Tree 维护最小生成树
    简介本文将简单介绍如何使用LinkCutTree维护动态图最小生成树。思路最小生成树的性质:一个基环树的最小生成树,为将环上边权最大的边删除后所组成的树。Proof:如果删......
  • Luogu P5676 [GZOI2017] 小z玩游戏
    P5676[GZOI2017]小z玩游戏难度:提高+/省选-标签:Tarjan建图\(\mathtt{blog}\)有\(n\)组数\((w_i,e_i)\),如果当前数值为\(w_i\)即可改变为\(e_i\),如果当前数值......
  • CodeForces 1726E Tree Sum
    洛谷传送门CF传送门不错的一道Combinatorics。结论1:\(n\)为奇数时答案为\(0\)。设\(d_i\)为与点\(i\)相连的边边权乘积。每加入一条边对两端的\(d_i\)贡献......
  • 洛谷P4146 序列终结者 题解 splay tree
    题目链接:​​https://www.luogu.com.cn/problem/P4146​​题目大意:支持:区间更新(+x)区间翻转区间查询(最大值)解题思路:几乎和​​AcWing2437.Splay​​这题一模一样。示例程......
  • Blood Cousins Return DSU on tree
    #include<bits/stdc++.h>usingnamespacestd;constintN=2e6+10;intn,m,Maxdep;map<string,int>name;vector<int>mp[N];vector<pair<int,int>>qus[N]......
  • BTree与B+Tree图文详解--转
    简介: B树与B+树区别一、前言磁盘I/O:是指磁盘的输入和输出(Input和Output的缩写)。二叉查找树:左子树的键值小于根的键值,右子树的键值大于根的键值。二叉查找......
  • list转json tree的工具类
    packagecom.glodon.safety.contingency.job;importcom.alibaba.fastjson.JSON;importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;i......
  • 【CF1481F】AB Tree(单调队列优化多重背包)
    容易看出答案下界是树的最大深度,且构造方法只能是每一层的节点都染成同种颜色,可行性的判断是个背包问题。然后发现若不可行,就把除最后一层外的其它层每层都染成同种颜色,然......