首页 > 其他分享 >[P3899 [湖南集训] 更为厉害]

[P3899 [湖南集训] 更为厉害]

时间:2025-01-11 16:55:19浏览次数:1  
标签:P3899 dep text 厉害 三元组 以点 节点 贡献 集训

P3899 [湖南集训] 更为厉害

[湖南集训] 更为厉害

题目描述

设 \(\text T\) 为一棵有根树,我们做如下的定义:

  • 设 \(a\) 和 \(b\) 为 \(\text T\) 中的两个不同节点。如果 \(a\) 是 \(b\) 的祖先,那么称“\(a\) 比 \(b\) 更为厉害”。
  • 设 \(a\) 和 \(b\) 为 \(\text T\) 中的两个不同节点。如果 \(a\) 与 \(b\) 在树上的距离不超过某个给定常数 \(x\),那么称“ \(a\) 与 \(b\) 彼此彼此”。

给定一棵 \(n\) 个节点的有根树 \(\text T\),节点的编号为 \(1\) 到 \(n\),根节点为 \(1\) 号节点。
你需要回答 \(q\) 个询问,询问给定两个整数 \(p\) 和 \(k\),问有多少个有序三元组 \((a,b,c)\) 满足:

  1. \(a,b,c\) 为 \(\text T\) 中三个不同的点,且 \(a\) 为 \(p\) 号节点;
  2. \(a\) 和 \(b\) 都比 \(c\) 更为厉害;
  3. \(a\) 和 \(b\) 彼此彼此。这里彼此彼此中的常数为给定的 \(k\)。

数据范围:

\(n\le 3*10^5\)

Solution:

话说之前暑假的时候貌似就见过这题,当时它貌似叫“谈笑风生”。

事先声明:本文中的 \(dep\) 是在根节点的深度为1的基础上定义的,同时,我将使用 \(S(x)\) 表示点 x 的子树
首先我们来思考一下那些点会产生贡献:

拿样例来看,对于询问 (2,2):合法的三元组有 \((2,1,4)\)、 \((2,1,5)\) 和 \((2,4,5)\)

我们先重新描述一下贡献:我们发现三元组中的 \(a\) , \(b\) 并无区别,所以我们假设 (a,b,c) 的深度是单调递增的

不难看出其实我们可以把贡献拆为两部分:以点 \(p\) 做为三元组中的 \(b\) 的贡献和以点 \(p\) 作为 \(a\) 的贡献

我们先求以点 \(p\) 做为三元组中的 \(b\) 的贡献:
在这种情况下,(fa[p]->1) 路径上的所有点都可以作为 \(a\) ,\(p\) 的子树内的所有节点都可以作为 \(c\) ,因此,该部分的贡献为:
\(min(dep[p]-1,k)*(siz[p]-1)\)

然后对于以点 \(p\) 作为 \(a\) 的贡献:
假设我们已经在点 p 的子树内钦定了一个点 \(q\) 作为 \(b\) ,那么 \(c\) 就应该从 \(q\) 的子树内进行选取,也就是说,这部分的贡献是:

\[\sum_{q\in{S(p)}|dis(p,q)\in[1,k]} siz[q]-1 \]

我们不难想到用线段树合并来维护这个式子,我们以\(dep[x]\) 为下标 \(siz[x]-1\) 为点权建立一颗权值线段树,然后向上合并,那么对于每个点 \(p\) 上能取到的贡献就是 \(dep\in[dep_p,dep_p+k]\) 这段区间的总和

然后说一些细节:

由于是线段树合并,所以如果想要在线做这道题的话在 merge 的时候一定要新建一个节点作为合并的结果,否则就会使得一个点上挂有同层其他节点的贡献,这样显然是错误的

但是我们发现本题可以离线,所以我们将每个询问挂到点上,我们在构建完一个点的线段树后直接查询,在其他节点乱入之前完成答案统计。

Code:

标签:P3899,dep,text,厉害,三元组,以点,节点,贡献,集训
From: https://www.cnblogs.com/LG017/p/18665860

相关文章

  • 寒假集训
    Day1前言:为什么今天右眼皮总跳……拜托一定要发生点好事啊作业链接今天的调试:方差:首先,\(update\)没\(return\)。其次,没看到“实数”。最后,推的式子是对的,但统计答案时出错了。怒调半小时(?)线段树合并wiki链接个人感觉与其说是“合并”,不如说是“重叠”顾名思义,......
  • P1792 [国家集训队] 种树
    题意:给一个长度为n的环形数组,你要选m个数,满足没有任意两个数的位置相邻,求总和最大。一开始没仔细看数据范围写了个dp暴力,想着枚举第1个点选还是不选两次dp取最大值。(属于痴心妄想)后面自己也是看的题解。我们先贪心选最大的,那么它两边就不可以选了,但有可能选两边比选这个更好,那......
  • 2022-2023 集训队互测 Round 6 - >.<
    不能包含某一条路径,这个东西看起来很像字符串啊!我们把这些路径插入到trie中,建立AC自动机,然后再把\(n\)个单点插进去。在建出来的AC自动机上跑最短路,钦定某些点不能被进入即可。但是因为字符集是\(\mathcalO(n)\)的,所以直接暴力连边复杂度无法接受。考虑连边的过程,是继......
  • 省选集训-模拟赛 3
    A\(2^n·n^2\)的暴力枚举想必不用多说。考虑暴力dp,设\(f_{i,S}\)为\([1,i]\)里选了集合\(S\)的点,那么可以容易的\(O(n)\)扫描更新,做到\(O(2^n·n)\)注意到对于\(f_{i,S}\)以及更后面的状态而言,将\(a_i\sima_n\)排序后的\(b_1\simb_{n-i+1},b_0=0,b_{n-i+2}=n......
  • 省选集训-模拟赛2
    A读错题了,真唐。注意到是电性只和移动方向有关系,但是我们需要考虑虚实。将其变为不交换,只变化属性,那么\(x\to\leftarrowy\)只是属性变为碰撞球属性的相反属性。因此我们考虑向左移动的球撞到一个向右移动的球后有什么变化,不妨设向右移动的球的树形分别为\([c_0,\dotsc_k]......
  • 省选集训—线性代数
    目录link1ABZOJ2396BLOJ3409CNOI2021路径交点DABC216HE[PA2021]Fiolki2F摆G仙人掌HCIhuaweilink2AJSOI2010巨额奖金B「THUPC2019」找树C「联合省选2020A」作业题D重建E「PA2022」DrzewarozpinająceF破烂森林GHSNCPC2024最大流我怎么这么渺小啊link1......
  • 『联合省选2025集训』『矩阵树定理,LGV引理,行列式』 Day8 略解
    前言许多人所谓的成熟,不过是被习俗磨去了棱角,变得世故而实际了。这两天的线性代数属实是要给我创破防了。拼尽全力战胜基础题目之后,难的题目偏的偏怪的怪,还有一堆不会的数学知识点,我还是摆烂了吧。先稍做一下总结。以及,我突然意识到总结的效率问题,或许我真的应该减少每道题......
  • 完全主观的经验分享——2025年集训队考研分析
    25灵动考研分析本文中,以11代指数学一英语一,22代指数学二英语二,以408代指统考的计算机基础综合。目录25灵动考研分析考情分析备考进度分析数一备考试卷分析如何复习套卷分析考察重点408备考政治备考英一备考心态调整QA考情分析在本年考研中,5人考22自命题,1人考22408,1人考11408。......
  • 2024-2025 集训队互测 Round 13 - 线段树与区间加
    前言:张定江的题,但是在讲课里面拉的,放在一堆答辩里面。这个题虽然是答辩,但是是有价值的。题面有一百个锅。不过不影响做题就是了。我们可以发现\(a_i=\sum\limits_{x\in\text{Subtree}(i)}lz_x\cdotlen_x\),故我们可以直接把\(v_a\)以特定方法加到\(v_b\)上,然后问题变成求......
  • 2024北京知码狐信息集训总结
    你这集训,真令我欢喜!为期两周的集训(天堂生活)也是结束了,地狱(文化课)在召唤!集训的收获关于这次集训,我的收获自认为超过待在监狱(学校)半年,主要分为这几个方面:lxl实在是太强啦!他的课带来的收获占了整个集训的\(\frac{1}{3}\),尤其是他讲的插入-标记-删除算法,简洁易懂,见题就秒,蓝紫......