首页 > 其他分享 >一句话

一句话

时间:2024-04-20 21:24:10浏览次数:13  
标签:子树 重心 一句 复杂度 分治 lca dis

点分治

对于一棵子树,即正常 dfs 的根改成该子树重心,递归下去是按原树儿子所在子树的重心(每次找一遍),变成了子问题,可以处理与树形态没什么关联的问题

发现 siz 每次减半,故深度 log 层;同时 siz 大小总和的复杂度是对的

由于总是处理的整棵子树,而答案与子树遍历关系无关,所以一定是对的!!!同时遍历处理什么信息的复杂度也是对的(花了一晚上理解,真的确确实实是对的)

附一张图:

点分治

边分治

把点分治中的点换成边,这条边的两边子树大小相平衡,也就是当前子树找的不是点(重心)而是一条边了,继续往下找也是找的边;但是注意它在菊花图上就不适用,所以要把这棵树变成二叉树来获得好的性质.

点分树

其实点分树的题就是把点分治的题从一个点到几个点,多次询问,有修改

把点分治中每次找的重心先一遍存下来,避免之后每次都要找重心;他有很好的性质:

  • 深度 \(\log\) 层;
  • \(u,v\) 的 \(lca\) 在原树中是 \(u,v\) 路径上的一个点,可以用来 \(dis(u,v)=dis(u,lca)+dis(lca,v)\)(\(dis\) 指原树中的距离)

这样,我们想一个暴力,然后把它放到点分树上去就可以了

虚树

只有选定点和它们 \(lca\) 的树,若选定 \(m\) 个点,则加上 \(lca\) 一共 \(2m-1\) 个点,两种构建方式:

  • 按 dfn 排序后两两加入相邻两个点的 lca,去重
  • 随便什么顺序加,但是用个栈维护最右链,注意若栈弹完了要加入栈中最后一个点与当前点的 lca

最常用最好写的还是第一种,不过第二种是线性的,闲得可以用,其实第二种也比较好写

用法:如果两点之间跳很多中转点是没用的,那可以用虚树来避免很多的中转点,同时也适合 dp 什么的

动态 dp

用数据结构维护可合并的动态规划,有两种方式:

  • 形如线段树维护区间背包
  • 维护矩阵,可以改变矩乘运算:\((+,\times),(\land,+)\)(即 \((\min,+)\))什么的

归并树

把归并排序过程中的每个序列记下来了,注意空间复杂度 \(O(n\log n)\),由于每个节点变成了一个序列,可以干很多事情(例如每个序列上走指针什么的)

替罪羊树

暴力的平衡树,采用重构方法:

  • 设不平衡率 \(\alpha\),左右子树大小比值小于这个值就重构该子树
  • 每隔一段固定时间重构整棵树

虽然暴力,但是由于不旋转可以做比普通平衡树更多的一些事情,同时可以作为数据结构的外层嵌套.

标签:子树,重心,一句,复杂度,分治,lca,dis
From: https://www.cnblogs.com/laijinyi/p/18148183/xianhua

相关文章

  • PHP 一句话木马 @eval($_POST[‘hack‘]);作用解释
    简介:@eval()函数的作用是,不将错误爆出来,且将变量中的内容当作php的代码,进行执行,任意代码均可,所有能直接控制主机。转自:https://blog.csdn.net/BYZY1314/article/details/127792228一句话木马如下,利用文件上传漏洞,往目标网站上传该木马,即可获取和控制整个网站主机目录<?php@......
  • Cursor:你的前端“超能力”助手,一句话搞定HTML、CSS、JS!
    一、简介Cursor,不仅仅是一个开发工具,更是你前端路上的“超级英雄”!它融合了GPT-4的AI智慧,能听懂你的“心声”,一键将你的创意转化为神奇的HTML、CSS和JavaScript代码。告别繁琐的编码工作,让Cursor成为你创意的翅膀,带你飞翔在前端的世界!链接:Cursor官网二、功能亮点1、一......
  • 【一句话木马实操】简单的3种类型
    环境:phpstudy目录GET型POST型Cookie型 GET型使用get型一句话木马执行参数passphp代码使用;结尾<?phpeval($_GET[pass]);?>无相应代表被正确解析输入pass参数这里还发现system(ls)无法使用?可能是权限不够。也可以使用?pass=system(ipconfig);发现并......
  • lesson7单引号+双括号布尔盲注或一句话木马+蚁剑
    lesson7单引号+双括号布尔盲注或一句话木马+蚁剑1.验证注入点从下面的注入测试来看,只有两种输出结果如果sql执行了,就会输出“Youarein…Useoutfile…”,反之输入“YouhaveanerrorinyourSQLsyntax”?id=1--+--Youarein....Useoutfile......?id=1'--+--......
  • 一句话总结Kubernetes的Headless服务
    Kubernetes的概念很多,有的着实让人费解,比如说Headless服务,听名字就很拗口。那Headless服务是什么,使用场景是什么。一句话总结:Headless服务就是一组Pod组成的只供集群内访问(没有ClusterIP)的Service,一般结合StatefulSet用于部署有状态应用的场景。1、Service与服务发现提到Headl......
  • 一句话总结Docker与K8S的关系
    一句话总结:Docker只是容器的一种,它面向的是单体,K8S可以管理多种容器,它面向的是集群,Docker可以作为一种容器方案被K8S管理。下文继续具体介绍。1、容器的核心概念介绍这几个核心概念:OCI、CR、Runc、Containerd、CRI。1.1、容器运行规范容器运行规范OCI(OpenContainerInitiat......
  • 设计模式一句话总结
    1.设计原则(SOLID原则)原则名字原则描述单一职责原则(S)功能只有一个开闭原则(O)开放扩展,关闭修改里氏替换原则(L)子类需要实现父类功能以保持兼容性接口隔离原则(I)不用的函数或者功能不要出现依赖倒置原则(D)细节依赖于抽象,约定优先迪米特法则只和朋友说话......
  • C# Onnx Chinese CLIP 通过一句话从图库中搜出来符合要求的图片
    C#OnnxChineseCLIP通过一句话从图库中搜出来符合要求的图片效果生成图片特征查找踢足球的小孩测试图片模型信息image_model.onnxInputs-------------------------name:imagetensor:Float[1,3,224,224]---------------------------------------------------------------O......
  • python的任何题目开头加上一句class的语句就是面向对象程序设计吗
    Python的任何题目开头加上一句class的语句并不意味着是面向对象程序设计(Object-OrientedProgramming,OOP)。面向对象程序设计是一种编程范式,它将程序组织为对象的集合,每个对象都有自己的状态和行为,并且可以与其他对象进行交互。在Python中,使用class关键字可以定义类,类是对象的蓝图,描......
  • 基于FastGPT和芋道源码挑战一句话生成代码
    芋道源码相信很多朋友都很了解了,今天我们试着基于FastGPT实现芋道框架的代码生成。芋道的代码生成,是基于数据库表字段实现的,那我们的思路就是看看如何使用GPT帮我们生成数据库表结构,只要数据库表字段有了,代码也就生成好了。实现这个需求我们就需要用到FastGPT的高级编排功能。编排......