算法总结篇(枚举-分治)

枚举

枚举:铺地毯-CSDN博客

求最后覆盖在这个坐标上面的毯子的编号。 关键词:最后,坐标,毯子。

怎么找?从后往前枚举,找最后的毯子。

怎么找到最后的毯子?题目说,求坐标上面的摊子的编号,换句话说,最后毯子包住了坐标。这题的重点就是放在++坐标对比++上。毯子包住坐标,说明坐标在地毯的范围内,则坐标的x, y>= 地毯左下角最小坐标,坐标x, y<= 地毯右上角最大坐标。符合条件,说明是最后的毯子。

前缀和 O(n) 10^7

求数组某一段区间的和

  1. 预处理前缀和数组。

  2. 求x-y区间的和。对前缀和数组: f[y]-f[x-1] 。

二维前缀和:模板+题目-CSDN博客

差分 O(n)

将某一个区间统一加上 "一个数"

  1. 预处理差分数组(先减后加)

  2. 求L-R区间的和。f[L] += k, f[R+1] -= k

  3. 还原数组,对差分数组做前缀和

二维差分:模板+题目-CSDN博客

双指针 O(n)

双指针:唯一的雪花-CSDN博客

两个指针都不回退,代码相似点:求长度是right-left+1

右指针先走,右指针哈希表做出变化。

满足特定条件时,左指针哈希表做出变化,左指针再走。大循环内对题目要求的值作出修改,直至循环结束。

二分 O(n*logn) 2*10^5

二分查找模板-CSDN博客

二分查找:A-B数对-CSDN博客

先检查边界问题!情况是否可能不存在:如果这个最小的数大于数组最大的数,或者最大的数大于数组最小的数,输出为0。 再使用模板解题。

二分答案:跳石头-CSDN博客

用题目给出的求值作为mid。判断是求>=还是<=,做出if,else等式。最后检查边界问题,检查情况是否可能不存在。

贪心 O(n*logn) / O(logn)

贪心:货仓选址_c++ p10452 货仓选址-CSDN博客

这是一道经典的贪心题目。

贪心:拼数-CSDN博客

贪心:保卫花园-CSDN博客

  • 在确定好 (假设确定好) 顺序的序列中,拿出相邻的两个元素
  • 如果交换 这两个元素,对前面以及后面确定好顺序的序列的结果不造成影响
  • 此时就可以根据这两个元素交换前后的结果,推导出排序的规则

贪心:哈夫曼编码-CSDN博客

基于堆的贪心 O(log⁡n)

贪心:线段覆盖-CSDN博客

这是一道我认为很经典的区间取舍题目。

贪心:Stall Reservations S(重写)-CSDN博客

这道题有点像区间覆盖,但是,这道题是区间覆盖的升级。对于重复的区间,我们要另开一段。产奶起始时间相当于比赛开始时间,产奶结束时间相当于比赛结束时间。

数组按起始时间升序排序,优先级队列按结束时间升序排序。最快开始时间匹配最快结束时间,如果最快结束时间晚于最快开始时间,说明要另请牛棚。否则,分配该牛棚的编号,更新结束时间重新入队。

贪心:Sunscreen G-CSDN博客

有多种可执行方案,举出可执行方案的反例。

贪心首先要做排序,题目如果给定一个对象两个值的话,可以使用结构体。

倍增 O(logn) 10^18

倍增:快速幂-CSDN博客

倍增:64位整除法-CSDN博客

离散化

离散化:贴海报-CSDN博客

排序+去重+二分+差分+前缀和+计算结果

分治

分治:逆序对-CSDN博客

分治:地毯填补问题-CSDN博客

分治就是分而治之,处理分成各种小块。这两道都值得进行复习。

相关推荐
开开心心就好7 分钟前
版本转换工具,支持Win双系统零售批量版
linux·运维·服务器·pdf·散列表·零售·1024程序员节
sin_hielo10 分钟前
leetcode 955
数据结构·算法·leetcode
TechNomad26 分钟前
二分搜索算法的介绍和使用
算法
一起养小猫27 分钟前
LeetCode100天Day4-盛最多水的容器与两数之和II
java·数据结构·算法·leetcode
xie_pin_an38 分钟前
深入解析 C 语言排序算法:从快排优化到外排序实现
c语言·算法·排序算法
Hcoco_me42 分钟前
机器学习核心概念与主流算法(通俗详细版)
人工智能·算法·机器学习·数据挖掘·聚类
Hcoco_me43 分钟前
嵌入式场景算法轻量化部署checklist
算法
咸鱼加辣1 小时前
【python面试】Python 的 lambda
javascript·python·算法
Jerryhut1 小时前
sklearn函数总结十二 —— 聚类分析算法K-Means
算法·kmeans·sklearn
Swift社区1 小时前
LeetCode 453 - 最小操作次数使数组元素相等
算法·leetcode·职场和发展