首页 > 编程语言 >LUOGU_进阶算法思想

LUOGU_进阶算法思想

时间:2024-10-31 11:45:58浏览次数:1  
标签:进阶 队列 LUOGU 分治 算法 DP 区间 单调 CDQ

进阶算法思想

单调数据结构

单调队列,单调栈都是均摊\(O(1)\),是不支持撤销的,只能按照正常过程加入。

单调栈

求最近的大于小于其的值

CF280B Maximum Xor Secondary:枚举最大值,次大值并不容易确定,但枚举次大值的位置,这样最大值就是其左右两边第一个比其大的值,用单调栈可求出。其实就是要枚举不好确定的那个

CF1407D Discrete Centrifugal Jumps:单调栈求出处理 DP 转移的范围,反向ST表优化DP即可。


单调队列

队列的元素满足:值是单调的,位置在原序列也是单调的。(似乎就是一个LCS??)

ABC352D Permutation Subsequence:做两个单调队列,\(\forall i\in [1,n-k+1]\) 分别求出值域 \([i,i+k-1]\) 最大最小值即可。

CF1195E OpenStreetMap:横着滑动窗口,求出横着的信息,再竖着求一遍得到矩阵信息,二维拆为两个一维

贪心(拟阵)

归纳法

每一步取到最优解

ABC236F Spices

CF1552E Colors and Interval:每 k-1为一组覆盖,使得这些不相交即可。贪心:每组一定可以选出k-1个区间,考虑数学归纳法,\(k=2\) 显然成立,\(k>2\) 时,取出第一个区间 \([l,r]\),一定有 \([1,r-1]\) 中不存在一种颜色出现两次,因此取完后归纳到 \(k-1\) 的情况,证明成功。

交换法

原理:交换两步操作,答案不优

条件:交换两部操作,只有 \(O(1)\) 个位置发生改变。

思路:如果交换不优,则应满足条件A,那么满足条件A,则也大概率就不能交换,这样直接排序即可

P1080 国王游戏

倍增

自下向上

跳步型(有具体结构)

条件:每一步的跳跃是唯一的(形如)

比如:倍增LCA

CF1142B Lynyrd Skynyrd

CF932D Tree

拆分型

倍增处理\(2^k\) 的答案

例子:ST表

拆分的ST表可以使用二进制拆分的 \(O(\log)\) 单点查询。

CF1848F Vika ans Wiki:对于这种迭代变化的题一定尝试多次手摸找规律,或者发现进行 \(m\) 迭代时是什么样的。

分治(合治)

类完全二叉树分治

就是题目给了你一个分治结构

P7143 线段树:线段树区间定位数定理:2*区间长度-区间覆盖节点数

具体结构分治

CDQ

将 \(n\) 维静态问题变为 \(n-1\) 维静态问题。

排序可以去掉一维,CDQ常常结合最开始的排序。

扫描线将 \(n\) 维静态问题转化为 \(n-1\) 维动态问题。

CDQ优化DP

导弹拦截

KD-T复杂度

矩形查询:\(O(n^{1-\frac 1k})\)

欧几里得最近邻:\(O(玄学)\)

曼哈顿最近邻:\(\le O(n^{1-\frac 1k}\log n)\)

笛卡尔树


什么是笛卡尔树,以及笛卡尔树的应用

\(<\land > \lor\)

区间物品DP?

动量变化

标签:进阶,队列,LUOGU,分治,算法,DP,区间,单调,CDQ
From: https://www.cnblogs.com/lupengheyyds/p/18517395

相关文章

  • LUOGU_图论
    LUOGU_图论ST表+DFN序LCA每次在自己的DFN序位置放入自己的父亲询问的时候l+1ST表+欧拉序LCA\(u,v\)在欧拉序中的第一个位置之间的深度最小位置就是LCA树的直径相距最远的两个点\(\max_{u,v}dis(u,v)=\max_{u,v}(dep_u+dep_v-2dep_{lca(u,v)})\)边权非负:两次BFS边权有......
  • LUOGU_进阶数据结构
    LUOGU_进阶数据结构二叉堆P10977CuttheSequence:因为DP的值是单调递增的,所以可能的决策点只有最远的合法位置与那些后缀最大值段的左端点,用单调队列+可删除堆(懒标记)做。如果\(\exista<0\),怎么做?CDQ优化DP,可以做!!并查集P10350ModernizacjaBajtocji:把二选一的居民放进一......
  • CMDB平台(进阶篇):CMDB的应用场景剖析
    配置管理数据库(ConfigurationManagementDatabase,简称CMDB)是IT服务管理(ITSM)中的核心组件。随着信息技术的快速发展,大型企业的IT环境变得越来越复杂,为了更好地管理和维护这些复杂的IT基础设施,近些年来国内CMDB平台越来越多,如乐维CMDB、华为CMDB等。CMDB不仅是一个存储系统,用于记录......
  • PME算法简单Python实现
    技术背景在前面的两篇博客中,我们分别介绍了Ewald算法求解静电势能和基于格点拉格朗日插值法的PME算法。在多种计算优化算法(Ewald求和、快速傅里叶变换、格点拉格朗日插值、截断近似)的加持下,使得我们不需要在实空间进行大量的迭代,也可以得到一个近似收敛的静电势能结果。相关的PME......
  • 无监督异常检测算法
    1、概述无监督异常检测方法有重建类、特征类、流模型和教师学生网络这几种,之前了解过重建模型,重建模型大多采用VAE+Diffusion+Transformer类模型,对缺陷特征进行创建,本次总结主要分析特征类的鼻祖模型PatchCore,并找到其论文和源码,了解其工作原理的一些细节。图1描述了Pat......
  • 写分布式机器学习算法,哪种编程接口比较好
    写分布式机器学习算法,比较好的编程接口:1、Python;2、ApacheSpark;3、ApacheFlink;4、ApacheHadoop;5、TensorFlow。其中,Python是一种通用编程语言,广泛用于数据科学和机器学习领域。1、PythonPython是一种通用编程语言,广泛用于数据科学和机器学习领域。它具有简单易学、可读性......
  • 新手逆向实战三部曲之三——通过进入关键call追码注册软件(进阶)
    教程开始:通过前两次的学习,是不是感觉逆向也蛮有意思的呢,感兴趣的同学可以先看看前二次的内容再继续向下学习新手逆向实战三部曲之一新手逆向实战三部曲之二有了上次爆破的基础,这次便省力了许多,这次从载入开始,虽前头的几个步骤与之前相同,温故而知新嘛(也可直接往后看)用OD......
  • 2024_10_30_2_hyperNeat进化神经网络算法
    原文地址:HyperNEATExplained:AdvancingNeuroevolutionExpandingNeuroEvolutionLastweek,IwroteanarticleaboutNEAT(NeuroEvolutionofAugmentingTopologies)andwediscussedalotofthecoolthingsthatsurroundedthealgorithm.Wealsobrieflytouc......
  • yolov8+多算法多目标追踪+实例分割+目标检测+姿态估计(代码+教程)
    #多目标追踪+实例分割+目标检测YOLO(YouOnlyLookOnce)是一个流行的目标检测算法,它能够在图像中准确地定位和识别多个物体。在这里插入图片描述本项目是基于YOLO算法的目标跟踪系统,它将YOLO的目标检测功能与目标跟踪技术相结合,实现了实时的多目标跟踪。在目标......
  • 代码随想录算法训练营day31| 56. 合并区间 738.单调递增的数字
    学习资料:https://programmercarl.com/0056.合并区间.html#算法公开课贪心PART5over学习记录:56.合并区间(也是找重叠区间,但是是跟result[-1]比,只用比右边界;更新result[-1][1]为更大值)点击查看代码classSolution(object):defmerge(self,intervals):"""......