首页 > 其他分享 >Cow Politics G

Cow Politics G

时间:2024-02-08 14:33:07浏览次数:23  
标签:子树 组别 Cow 别的 dfs 端点 Politics 直径

一个树上每一个点都有一个组别,求相同组别的点对相差的最大距离。可以叫这题为“部分树的直径”

有一个结论:对于任意一个组别,深度最大的点一定在答案的点对里。

审视一下这个证明是如何分类的,对于LCA的部分,显然是通过讨论\(y\)是不是\(z\)的祖先来完成的;之后是通过讨论是否是子树来进行的

所以,对于不同组别,我们只需要求出深度最大的点即可,之后在跑一遍LCA即可,均摊下来\(O(N)\)

然而,这道题目还有更简单的做法

既然是与直径有关,我们回想一下BFS求树的直径是怎么求的

回想完后,我们回到这道题目,对于一个组别,我们把有关这个组别的极大子树(即度数为\(1\)的点都是由这个组别的点构成的,而且这个组别的所有点都在这个子树里面)提出来,如果我们能够对每个组别的极大子树求出直径,那么显然就是答案(因为极大子树的边界都是这个组别的点,而极大子树的直径又一定是以边界作为端点的)

我们模仿BFS的过程,首先求出每个组别直径的端点,只需要在dfs遍历原树的时候,对于当前点:

如果当前点所在组别没被标记,则标记,并把当前点作为其组别的代表

如果当前点所在组别已经被标记,则用当前点与其组别代表求距离,并记录下其组别距离的最大值

一遍dfs完了之后,我们就相当于对每个极大子树求出了一个直径的端点,之后再dfs一遍,并模仿类似过程就可以解决问题了

标签:子树,组别,Cow,别的,dfs,端点,Politics,直径
From: https://www.cnblogs.com/dingxingdi/p/18011789

相关文章

  • P2986 [USACO10MAR] Great Cow Gathering G
    原题链接题解很简单想到暴力,但是\(O(n^2)\)显然不行所以要减少计算量,如何利用已经计算过的值而不是重新算一遍呢?这道题最好看成有中心点的网状图,而不是树状图随便取一个点\(A\)作为根节点,很容易计算其答案,如何计算以其他点为根节点的答案呢?对于以根节点的邻边节点\(B\)......
  • Poj 3278 Catch That Cow (BFS+队列)
    #include<iostream>#include<queue>#include<cstring>usingnamespacestd;constintN=1e5+10;intn,k,line[N],way;structnode{intloc,step;};queue<node>q;voidBFS(intn,intk){while(!q.empty())q.pop();nodestart,next......
  • POJ--2139 Six Degrees of Cowvin Bacon(最短路)
    记录20:342024-2-1http://poj.org/problem?id=2139最短路问题,使用Floyd后遍历选择就可以了。注意是多case输入,答案截尾。#include<cstdio>#include<cstring>#include<iostream>#defineMAX_N305#defineMAX_M10005usingnamespacestd;constintINF=0x3f3f3f3f;......
  • P2870 [USACO07DEC] Best Cow Line G
    https://www.luogu.com.cn/problem/P2870字典序最小显然贪心,若当前串首比串尾小,则取串首;若当前串首比串尾大,则取串尾。那串首串尾一样呢?这个顺序显然会影响到后续操作。考虑继续往内递归,如果碰到一样的,那么当前取什么都无所谓;若碰到不一样的,我们肯定是要取更小的那一边,因为这样......
  • 洛谷题解-P2888 [USACO07NOV] Cow Hurdles S (Floyd)
    https://www.luogu.com.cn/problem/P2888题目描述FarmerJohnwantsthecowstoprepareforthecountyjumpingcompetition,soBessieandthegangarepracticingjumpingoverhurdles.Theyaregettingtired,though,sotheywanttobeabletouseaslittleene......
  • 洛谷题解-P1821 [USACO07FEB] Cow Party S
    https://www.luogu.com.cn/problem/P1821题目描述寒假到了,nnn头牛都要去参加一场在编号为xxx的牛的农场举行的派对,农场之间有mmm条有向路,每条路都有一定的长度。每头牛参加完派对后都必须回家,无论是去参加派对还是回家,每头牛都会选择最短路径,求这nnn头牛的最短路径(一个......
  • CodeForces 995F Cowmpany Cowmpensation
    洛谷传送门CF传送门考虑一个显然的树形dp,设\(f_{u,i}\)为\(u\)结点染颜色\(i\)的方案数,有\(f_{u,i}=\prod\limits_{v\inson_u}\sum\limits_{j=1}^if_{v,j}\)。前缀和后可得\(f_{u,i}=f_{u,i-1}+\prod\limits_{v\inson_u}f_{v,i}\)。发现\(f_......
  • [USACO07DEC] Sightseeing Cows G
    [USACO07DEC]SightseeingCowsG题目描述FarmerJohnhasdecidedtorewardhiscowsfortheirhardworkbytakingthemonatourofthebigcity!Thecowsmustdecidehowbesttospendtheirfreetime.Fortunately,theyhaveadetailedcitymapshowingthe$L......
  • 借shared_ptr实现写时复制(COW)
    原理1、使用智能指针管理共享资源2、write端,若引用计数为1,则write端独占资源,若引用计数不为1,则对共享资源备份进行写操作,以确保线程安全3、read端,读之前引用计数加1,write端此时若并发访问共享资源,则会发现引用计数不为1,write端不会直接写共享资源,确保线程安全代码#include<m......
  • P3612 [USACO17JAN] Secret Cow Code S
    P3612[USACO17JAN]SecretCowCodeS自我感想哎,又是一道写不出来的。完全没有这样的思路,只会笨b模拟只能得40.解题前应该的思考通过题目给的数据可以知道纯暴力模拟肯定爆空间。(基本否定正推)这里根据题目所说的,其实可以知道是一个初字符串通过固定的规律形成新的字符串。(......