首页 > 其他分享 >树剖总结

树剖总结

时间:2024-10-06 18:43:54浏览次数:5  
标签:总结 要判 树剖 合并 Ynoi2017 答案 OJ

前言

最近被树剖整得很难受,于是有了这一篇总结。

灵感来源于这几道题:[Ynoi2017] 由乃的 OJ[SDOI2011] 染色[TJOI2015] 旅游

关于树剖

树剖解决的问题一般是动态且与树上的简单路径有关,就是将树上的问题转变到链上,然后用数据结构(线段树)来维护一些复杂信息。

一般解决树剖会遇到的瓶颈:

  1. 如何处理链上的情况。

  2. 查询时如何合并剖分开的链

下文主要记录处理第二个瓶颈的套路。

合并链

这 \(3\) 道题都有一个特点:合并链较难处理,有许多细节。

三个题有异曲同工之处,最后要将起点 \(u\) 跳过的链的答案 \(l\),和跳完的 \(u'\) 和 \(v'\) 中间的答案 \(mid\),以及终点跳过链的答案 \(r\) 进行合并。

这三道题最后 \(u'\) 和 \(v'\) 的形态会影响最后的答案,然而 \(u'\) 和 \(v'\) 的形态无非就两种:一种 \(u'\) 在上,一种 \(v'\) 在上。但是有些时候要判一下 \(l\) 和 \(r\) 是否记录过链的答案,否则会对答案产生影响。

[Ynoi2017] 由乃的 OJ为例,就有:

if(!flagl&&!flagr) memcpy(all,(dep[u]<=dep[v])?now.lans:now.rans,sizeof(all));
	else if(id[u]<=id[v]) memcpy(all,(l*(now+r)).lans,sizeof(all));
	else memcpy(all,((now+l)*r).lans,sizeof(all));

像旅游和染色就要更复杂一些,应为要判 \(l\) 和 \(r\) 是否记录过链的答案。

小 trick 就是合并时重载运算符,结构体写初始化来简便代码。

标签:总结,要判,树剖,合并,Ynoi2017,答案,OJ
From: https://www.cnblogs.com/dayz-break/p/18449283

相关文章

  • # 2024-2025-1 学号(2024130) 《计算机基础与程序设计》第二周学习总结
    作业信息|这个作业属于哪个课程|<[2024-2025-1-计算机基础与程序设计]>(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP))||-- |-- ||这个作业要求在哪里|<[2024-2025-1计算机基础与程序设计第一周作业]>(https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/home......
  • 2024-2025-1 20241322《计算机基础与程序设计》第二周学习总结
    作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02这个作业的目标<数字化信息安全自学教材计算机科学概论(第七版)第1章并完成云班课测试《C语言程序......
  • 10.6 总结
    T1一道计几,还行,第一个就是直接三分支线上的点然后求函数谷值,第二个就是\(\min\{Dist(x_1,x_3),Dist(x_2,x_3)\}\)。#include<cmath>#include<iomanip>#include<fstream>#include<ctime>usingnamespacestd;constdoubleeps=1e-8;ifstreamcin("fou......
  • 2024-2025-1 20241407《计算机基础与程序设计》第二周学习总结
    这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里[2024-2025-1计算机基础与程序设计第二周作业](https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13266)这个作业的目标数字化信息安全*自学教材:计算机科学概论(第七版)第1......
  • # 学期(如2024-2025-1) 学号20241405 《计算机基础与程序设计》第2周学习总结
    |这个作业属于哪个课程|2024-2025-1-计算机基础与程序设计)||这个作业要求在哪里|https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13276))||这个作业的目标|数字化、信息安全、自学教材计算机科学概论(第七版)第1章并完成云班课测试、《C语言程序设计》第1章并......
  • 2024-2025-1 20241416 《计算机基础与程序设计》第二周学习总结
    这个作业属于哪个课程 2024-2025-1-计算机基础与程序设计这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02这个作业的目标 数字化、信息安全、自学教材计算机科学概论(第七版)第1章并完成云班课测试、《C语言程序设计》第1章并完成云班课测试作业正文......
  • 2024-2025-1 20241329 《计算机基础与程序设计》第二周学习总结
    作业信息作业归属课程:https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02作业目标:1.数字化2.信息安全3.自学教材:计算机科学概论(第七版)第1章并完成云班课测试、《C语言程序设计》第1章并完成云班课测试作......
  • 2024-2025-1 20241311 《计算机基础与程序设计》第二周学习总结
    学期(2024-2025-1)学号(20241311)《计算机基础与程序设计》第2周学习总结作业信息这个作业属于哪个课程<班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(如2024-2025-1计算机基础与程序设计第二周作业)这个作业的目标<写上具体方......
  • 2024-2025-1 20241421 《计算机基础与程序设计》第二周学习总结
    这个作业属于哪个课程2024-2025-1-计算机基础与程序设计这个作业要求在哪里https://www.cnblogs.com/rocedu/p/9577842.html#WEEK02这个作业的目标数字化、信息安全、自学教材计算机科学概论(第七版)第1章并完成云班课测试、《C语言程序设计》第1章并完成云班课测试......
  • 学期(2024-2025-1) 学号20241425 《计算机基础与程序设计》第2周学习总结
    学期(2024-2025-1)学号20241425《计算机基础与程序设计》第2周学习总结作业信息这个作业属于哪个课程<班级的链接>(2024-2025-1-计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>([2024-2025-1计算机基础与程序设计第二周作业]https://www.cnblogs.com/rocedu/......