首页 > 其他分享 >分治总结

分治总结

时间:2024-12-23 19:43:12浏览次数:4  
标签:总结 子段 分治 合并 mid 区间 排序

有各种分治:CDQ分治,树上分治,数据结构上分治,根号分治,etc.

普通分治

求逆序对

用归并排序求逆序对。

Sol:

其实逆序对是在归并排序时顺带求的,主要是归并排序。

我们要对区间\([l,r]\)从小到大排序,先对\([l,mid],[mid+1,r]\)排序(这一步体现分治思想)。

现在考虑怎么把两边合并。我们定义两个指针\(i,j\)分别指向左右两边最小的那个元素(由于排好序了,指向的就是第一个),依次从\(i,j\)指向的两个元素中选较小的一个加入到答案序列中,并将其所对应的指针往后移即可。

求最大子段和

求当前区间\([l,r]\)的最大子段和。

Sol:

先将当前区间分成两边\([l,mid],[mid+1,r]\)。

考虑将两边的区间合并得到答案。

发现只维护每个区间的最大子段和不够,再维护最大前缀和,最大后缀和与区间和。

合并时维护区间的最大前缀和\(lmx\),最大后缀和\(rmx\),区间和\(sum\)与最大子段和\(val\)。

这个分治操作可以搞到线段树上,这是简单的。

求关于所有区间的信息

发现关于所有区间的信息是\(O(n^2)\)的,于是尝试通过分治降到\(O(n\log n)\)。

每次分治后只需考虑跨过区间中点的区间的答案,考虑合并得到这个答案,一般是处理左边区间的后缀信息,右边区间的前缀信息,然后尝试合并,再简化合并的过程,通过分析一些关于答案的性质来快速计算。

CDQ分治

树上分治

DS上分治

根号分治

标签:总结,子段,分治,合并,mid,区间,排序
From: https://www.cnblogs.com/EmilyDavid/p/18624871

相关文章

  • 贪心总结
    每次都选当下的最优解,一步步得到全局的最优。可以贪心的题目的性质最优子结构性质:选择当前问题的最优决策不会影响子问题的最优决策。贪心选择性:当前决策依赖于已经做出的决策,且决策一旦做出边不能更改。证明贪心策略正确的方法反证法:如果交换某两个元素后不会得到更......
  • static修饰成员方法、static修饰成员的特点总结、浅聊主方法-java se进阶 day01
    1.工具类的介绍工具类不是用于描述事物的类,而是帮我们完成事情的类(打工)如图当我们编写完这个类后,我们会发现一件事,这个类自己本身并没有意义,这个类完全是给用户进行调用方法的既然是专门给用户调方法,那我们就应该写的更简便点,创建对象,再拿着对象名调用过于麻烦,因此我们在这......
  • JDK监控和故障处理工具总结
    JDK命令行工具这些命令在JDK安装目录下的bin目录下:jps(JVMProcessStatus):类似UNIX的ps命令。用于查看所有Java进程的启动类、传入参数和Java虚拟机参数等信息;jstat(JVMStatisticsMonitoringTool):用于收集HotSpot虚拟机各方面的运行数据;jinfo(Configu......
  • KDT总结
    咕咕咕。学会了一点了。KDT维护了\(k\)维空间中的超长方体。每个结点及其子树都在同一超长方体中。KDT的实现与平衡树类似(其实在\(k=1\)时就是另类的平衡树,只不过不太优秀)。树上的每个结点都对应着\(k\)维空间中的一个点。然后随便维护一下信息就可以支持\(k\)维超长方体查询信......
  • 2024年年终总结
    年底了,也来个总结1、减肥成功从体检时候的77KG,即154近减到136斤,减了18斤。主要是跑步,偶尔还去爬爬香山,这小半年,健身卡没浪费。中间还顺便跑了个半马,成绩2小时内。减肥缘由来自,年初过年的时候,来自老丈人和媳妇的告警。也是因为疫情三年,几乎没有锻炼。疫情之前,周末还去游游泳......
  • C语言常见错误总结
    语法错误 -括号不匹配:在函数定义、条件语句、循环语句等使用括号的地方,忘记添加或多添加括号,会导致编译错误。例如, if 语句中条件表达式括号不匹配,编译器会提示语法错误信息,指出缺少或多余的括号位置,仔细检查括号的成对性可避免。-分号缺失或多余:C语言语句以分号结束......
  • 平衡树总结
    从BST引入。我们要高效查找一个值,那么在保证左儿子小于右儿子的二叉树上跳,期望\(O(d)\),\(d\)为深度。二叉搜索树BST最好\(O(\logn)\),最坏\(O(n)\)。左子树的权值小于根的权值小于右子树的权值。P用没有。替罪羊树是一种依靠重构来维持平衡的重量平衡树。在插入删除时发现......
  • 链剖分总结
    来解决树上DS问题。因为没有能够直接高效维护树型结构的DS,于是把树剖分成链,然后拿序列上的DS去维护每一条链的信息。树链剖分有很多种:轻重链剖分,长链剖分,虚实链剖分。轻重链剖分这里是轻重链剖分。常数很小。其实不一定要用线段树维护,但用线段树维护是最常见的。支持换根,路......
  • 鸿蒙Next ArkTS编程规范总结
    一、目标和适用范围ArkTS编程规范参考业界标准及实践,结合ArkTS语言特点,旨在提高代码的规范、安全和性能,适用于开发者使用ArkTS编写代码的系统开发或应用开发场景。二、规则来源ArkTS在TypeScript基础上强化静态检查和分析,部分规则源于《OpenHarmony应用TS&JS编程指南》,并为ArkT......
  • 79.尚庭公寓项目总结收获
    单体项目技术来自尚硅谷:https://www.bilibili.com/video/BV1At421K7gP/?spm_id_from=333.337.search-card.all.click&vd_source=eb2341710c995d8261ecc99fdd066ba71.Typora的使用用的其实就跟博客园写记一样的markdown形式但我是习惯于win自带的记事本或是直接博客园但是......