算法集训1:模拟,枚举,错误分析,前缀和,差分

枚举

一.比如:找到1-100最大质数

1.先对答案集合

如果范围集合找1-50中的数显然不对的

2.答案成立条件:结合题目的要求

3.尽可能减少枚举的范围,提高效率:枚举50-100的质数

4.选择合适的枚举顺序:

枚举质数,从1-100和从100-1是不一样的

前两种确定答案,后两种提高效率

枚举不一定要顺序循环枚举

二.搜索枚举:DFS BFS

比如:全排列:1-3的所有可能

三.模拟

题目告诉每一步的步骤

按照题目一步一步来,从家到学校到校门,题目咋说,咱们咋走

用算法的话,直接翻墙更近

难点:

题目简单,但是操作可能麻烦

不给直接的操作步骤,需要自己获取

错误分析

练习题

洛谷1003 1328

力扣59

四.前缀和

1.向上取整

整数除法想向上取整 → (被除数 + 除数 - 1)÷ 除数

// -1是为了不被整除,比如30/15=2,这时再加1就错误了

2. 向下取整(C++ 原生就是)

C++ 两个正整数相除,默认就是向下取整:

num = a / b

3.前缀和前提

数组均从下标1开始存储

a1--an

前缀和:数据前i项的和

1.一维数组:

2.二维数组

二维数组是:a11---aij的矩形区域

2.1二维数组的前提:

数组初始化为0,否则越界,下标必须从1开始

2.2二维前缀和公式

红色区域是蓝色和绿色的公共区域

计算最终结果,必须提前计算这三个数

2.3二维前缀和区间求和公式

二维前缀和求区间和(x,y)到(i,j)的和

高纬度的前缀和采取容斥原理的思想

2.4用法

前缀和一般是用来进行数组的预处理,提高后续操作效率的,多用于求区间和

五.差分

时间复杂度较高

接下来用差分(前缀和的逆运算)

一维公式:

a1=sum1

ai=sumi-sumi-1

图片是在L,R区间变化,aL+x时,想要把R后面的数不懂,所以aR+1-x

差分区间求值:

当前数组当作前缀和,求差分,差分改变之后,在求一遍前缀和

第二种写法:a\[\]原数组;b\[\]差分标记数组,标记a\[\]的改变量;sum\[\]:b\[\]的前缀和数组(a\[\]的总改变量数组)

二维差分

二位差分数组:

对二位前缀和的逆运算

二位差分数组的区间修改

bxy++

bx+1y--

bxy+1--

bx+1y+1++

二维差分例题

重点

区间增值时,二位差分是如何改变的

相关推荐
KJ_BioMed1 小时前
从PDB到高亲和力分子:De novo生成式计算化学Pipeline剖析
算法·生物医药·生物科研·科研干货·化合物设计
一个王同学2 小时前
从零到一 | CV转多模态大模型 | week17 | LLM 推理优化 & vLLM 详解
人工智能·深度学习·算法·机器学习·计算机视觉·vllm
旖-旎3 小时前
《LeetCode 53 最大子数组和 || LeetCode 918 环形子数组的最大和》
c++·算法·leetcode·动态规划
变量未定义~3 小时前
单调栈+倍增思想 皇家守卫【算法赛】、单调队列 附近最小
算法
QN1幻化引擎3 小时前
给 AI 做一次「意识体检」——基于 QN1 幻化引擎的灵鉴意识识别框架与 DalinX V5 实测
大数据·数据结构·人工智能·算法·架构
拂拉氏3 小时前
【知识讲解】 AVL树从基本成员的介绍到核心接口的实现(插入、判断、删除等等)
数据结构·算法·avl树
可靠的仙人掌4 小时前
SAC(Soft Actor-Critic)算法底座
开发语言·算法·php
c238564 小时前
《动态规划:从“傻傻穷举”到“过目不忘”的修仙之路》
c++·算法·动态规划
海石5 小时前
单调栈复健,顺便,牺牲一下吧,空间复杂度!一切献给AC
算法·leetcode
海石5 小时前
JS击败94%,Hard题想不到动态规划,那就用数组和栈试试
算法·leetcode