首页 > 其他分享 >CF2002D2 DFS Checker (Hard Version) 题解

CF2002D2 DFS Checker (Hard Version) 题解

时间:2024-09-07 22:52:49浏览次数:11  
标签:子树 题解 复杂度 Hard sol DFS fa dfn

https://codeforces.com/problemset/problem/2002/D2


考虑找一个容易维护的必要条件,再证明充分性。最容易想到的是

每个子树对应一个区间,子树根位于左端点

sol 1

相邻的结点 \(p_{i-1},p_i\) 有两种情况:\(fa[p_i]=p_{i-1}\);叶子 \(p_{i-1}\) 在子树 \(fa[p_i]\) 中,回溯到 \(fa[p_i]\)(\(fa[p_i]\) 的 \(p_{i-1}\) 方向的子树搜完了),再递归到 \(p_i\)

事实上不需要括号中的条件

\(p_1=1\),\(p_{i-1}\) 在子树 \(fa[p_i]\) 中

Pf. 对于子树 \(u\),满足 \(p_{i-1}\) 不在子树 \(u\) 中且 \(p_i\) 在子树 \(u\) 中的位置只有一个 \(p_i=u\)(只有子树 \(fa[u]\) 中有不在子树 \(u\) 中的点)

时间复杂度 \(O(n+q)\)

sol 2

父子 \(u,v\) 满足 \(dfn[u]<dfn[v]\land dfn[v]+siz[v]-1\le dfn[u]+siz[u]-1\)

Pf. 自下而上归纳证明每个子树都合法

只需要 check \(\min\{dfn[v]\},max\{dfn[v]+siz[v]-1\}\),multiset 维护

时间复杂度 \(O((n+q)\log n)\)

标签:子树,题解,复杂度,Hard,sol,DFS,fa,dfn
From: https://www.cnblogs.com/ft61/p/18402281

相关文章

  • abc370 A-E题解 (AtCoder Beginner Contest 370)
     A这类简单题,看清楚:OutputPrint Yes, No,or Invalid accordingtotheinstructionsintheproblemstatement. B Cstd,这样写(0->n-1,n-1->0),可以少写一个vector1#include<bits/stdc++.h>2usingnamespacestd;34intmain(){5strings,......
  • 题解:Toyota Programming Contest 2024#9(AtCoder Beginner Contest 370)
    总体情况这次手速够快:ABCin10min,ABCDEin30min。A-RaiseBothHands思路分类讨论很简单的。注意一定要判断\(0,0\)这种情况。Code//Problem:A-RaiseBothHands//Contest:AtCoder-ToyotaProgrammingContest2024#9(AtCoderBeginnerContest370)//URL:......
  • 天翼云存储SpinTires问题解析:d3dx9_43.dll文件丢失应对指南
    在使用天翼云存储或运行SpinTires等游戏时,有时会遇到系统提示“d3dx9_43.dll文件丢失”的错误。这个问题通常是由于DirectX组件中的d3dx9_43.dll文件未正确安装、损坏或丢失所导致的。以下是一些应对指南,帮助您解决这一问题:一、了解d3dx9_43.dll文件的重要性d3dx9_43.dll是D......
  • 东方博宜oj题解1161-1165(c++)
    各位读者们,抱歉,因为最近的时间原因,所以更新频率比较低。1161:1161-元素插入有序数组-东方博宜OJ#include<bits/stdc++.h>usingnamespacestd;intmain(){ intn,s,c; cin>>c>>n; inta[n];//定义数组 for(inti=0;i<n;i++){ cin>>a[i]; } s=n;//设c是最大的......
  • 洛谷 P4829 kry loves 2048——题解
    洛谷P4829题解传送锚点摸鱼环节kryloves2048题目背景kls是一个人赢。题目描述kls最近在玩一款类似2048的游戏,规则是这样的:一开始,有\(n\)个方块,每个方块上有一个\(1\)到\(m\)的整数。kls可以进行两种操作:选择两个数字相同的方块(不一定要相邻),将它们合并成一个数字为......
  • 【题解】【动态规划】—— [NOIP2001 普及组] 装箱问题
    【题解】【动态规划】——[NOIP2001普及组]装箱问题[NOIP2001普及组]装箱问题题目描述输入格式输出格式输入输出样例输入#1输出#1提示1.题意解析2.AC代码2.1.二维d......
  • 【题解】—— [NOIP2005 普及组] 陶陶摘苹果
    【题解】——[NOIP2005普及组]陶陶摘苹果[NOIP2005普及组]陶陶摘苹果题目描述输入格式输出格式输入输出样例输入#1输出#1提示1.题意解析2.AC代码[NOIP2005普及组]陶陶摘苹果通往洛谷的传送门题目描述陶陶家的院子里有一棵苹果树,每到秋天树上就会结出......
  • 【题解】【结构体排序】——[NOIP2007 普及组] 奖学金
    【题解】【结构体排序】——[NOIP2007普及组]奖学金[NOIP2007普及组]奖学金题目背景题目描述输入格式输出格式输入输出样例输入#1输出#1输入#2输出#21.题意解析2.AC代码[NOIP2007普及组]奖学金通往洛谷的传送门题目背景NOIP2007普及组T1题目描述某......
  • [ABC328G] Cut and Reorder 题解
    [ABC328G]CutandReorder题解题目不难,思维难度尚可。首先需要发现的性质是\(1\)操作的次数最多只需要使用一次,使用多少次其实都是等价的。\(n\le22\)显然考虑状压dp。平凡的想法是设\(dp_{i,j}\)表示填数的状态为\(i\),最后一个填的是\(j\)位置的数的最小代价。这......
  • CF1991F Triangle Formation 题解
    Description你有\(n\)根棍子,从\(1\)到\(n\)编号。第\(i\)根棍子的长度是\(a_i\)。你需要回答\(q\)个问题。在每个查询中,你会得到两个整数\(l\)和\(r\)(\(1\lel<r\len,r−l+1\ge6\))。确定是否可以从编号为\(l\)到\(r\)的棒中选择\(6\)个不同的棒,形......