算法学习
文章平均质量分 91
HiLittleBoat
“看似不起波澜的日复一日,一定会在某一天,让你看到坚持的意义。”
展开
-
《算法分析与设计》复习笔记
算法是由若干条指令组成的有穷序列,具有5个特性:确定性、能行性、输入、输出、有穷性●P类问题是多项式时间内可解的●NP类问题是多项式时间内可验证●存在这样一个NP问题,所有的NP问题都可以约化成它。这种问题不只一个,它有很多个,它是一类问题。这一类问题就是NPC 问题。其定义要满足2个条件:➢它是一个NP问题;➢所有NP问题都能规约到它。●满足NPC问题定义的第二条而不满足第一条。即所有的NP问题都能约化到它,但是他不一定是一个NP问题。问题A可以规约为B(记作A≤pB)原创 2023-01-13 20:43:06 · 6151 阅读 · 1 评论 -
Acwing算法基础【1】基础(三)前缀和与差分
能够快速地求出来原数组中一段数据的和,例如,如果想算一个数组中[l,r]的 数组的和,没有前缀和数组的话,复杂度就是O(n)的 ,如果有的话,我们就是可以直接 用 Sr - Sl-1 得到,查询的复杂度就是O(1), 但是求一个前缀和数组的复杂度就是O(n),适用于输入一组数据,让求好几段的数据的和的情况,例如给定一个区间 [l, r] 让a数组,这里边所有的数都加上c,如果是用遍历,那就需要O(n)的复杂度。就[1,1] 的区间+a1, [2, 2]的区间+a2 …[n, n]的区间+an。原创 2022-11-10 14:54:32 · 576 阅读 · 0 评论 -
Acwing算法基础学习笔记(二)二分
可以在写代码的时候,先不加1,然后 在调整区间的时候,看一下更新的时候,如果 r=mid-1 有减一的操作,就再去中间值更新的地方加上1,如果更新区间的时候,mid+1 或者直接取mid 没有加减操作的,就都可以不用补加一。例如说,当l = r-1的时候,mid如果只是(l+r)/2,就还是l,如果mid满足条件,更新l=mid,l就还是原来的l,会陷入死循环,所以要加1,让mid算出来是r。Step3、一直到最后,l 会和r 相遇,判断一下l 是不是我们要找的,就完成了。的问题,感觉 都会用二分,原创 2022-11-07 18:57:53 · 402 阅读 · 0 评论 -
Acwing算法基础学习笔记(一)快排和归并
一、排序1.1 快速排序1.1.1分治法快速排序是先在一个数组中,找到一个 “参考元素” 或者叫 “分界点”x,然后用两个指针分别从左右两端向中间走,如果是要升序,左边只保留比x小的,右边只保留比x大的,两个指针分别到不满足的地方停下,然后两个指针都停下的时候就交换。。等到两个指针回合,就把数组分成了两份,然后再对每一份进行二分的排序。1.1.2xstep1、确定分界点x,取法其实很随意,q[l]、q[(l+r)/2]、q[r] 、随机 都可以。原创 2022-10-24 16:42:10 · 678 阅读 · 0 评论