
算法竞赛进阶指南
文章平均质量分 87
juruo_c
研一菜狗 致力于研究各种计算机底层技术
展开
-
0x57 内容简介与例题习题
倍增优化DP基本思想基本思想倍增优化dp主要包括这样两个步骤:预处理和二进制拼凑答案。原创 2022-02-14 20:45:49 · 521 阅读 · 0 评论 -
0x56 内容简介与例题习题
状态压缩dp状压dp基本介绍【例题】蒙德里安的梦想(AcWing291)【例题】炮兵阵地(AcWing292)习题【练习】岛和桥(AcWing1194)状压dp基本介绍对于某些问题,我们需要在动态规划的“状态”中记录一个集合,保存“轮廓”的详细信息,以便进行状态转移。通常,若所记录集合中的元素都是小于KKK的自然数,且集合大小不超过NNN,那么我们可以将这个集合表示成一个NNN位KKK进制数,用一个[0,KN−1][0,K^{N-1}][0,KN−1]范围内的十进制整数,作为状态中的某一维。这种把原创 2022-02-14 17:28:05 · 773 阅读 · 0 评论 -
0x17 内容简介与例题习题
二叉堆【例题】超市(AcWing145)【例题】序列(AcWing146)许多问题都可以使用二叉堆来进行优化,下面直接看例题吧。【例题】超市(AcWing145)题目链接思路: 容易想到一个贪心策略:对于每个时间ttt,在保证不卖出过期商品的情况下,尽量卖出利润前ttt大的商品。具体做法如下:1.我们将所有商品按照过期时间从小到大排序,建立一个初始为空的小根堆,然后依次扫描每一个商品。2.对于当前商品,如果当前过期时间等于堆中商品数目,说明前ttt天已经安排了ttt个未过期商品准备卖出,那么如果原创 2022-02-11 09:27:43 · 728 阅读 · 0 评论 -
0x15 内容简介与例题习题
字符串KMP模式匹配【例题】KMP模式匹配KMP的原理以及nextnextnext数组的求解方法这里就不再赘述啦!主要讲讲他们的应用吧!【例题】原创 2022-02-04 14:29:24 · 707 阅读 · 0 评论 -
0x14 内容简介与例题习题
Hash字符串哈希字符串哈希这里主要介绍字符串哈希,它算是一个暴力算法,当我们在处理字符串类型的题目时,如果没有思路,不妨试试哈希。字符串哈希在O(n)O(n)O(n)处理出字符串所有前缀的哈希值之后,可以O(1)O(1)O(1)查询任意子串的哈希值。一般,我们的哈希函数设计为:取一个固定的PPP值,把字符串看成是PPP进制数,并分配一个大于0的数值,代表每种字符,然后取一固定值MMM,求出该PPP进制数对MMM的余数,即对MMM取模,作为该字符串的哈希值。一般而言,我们取PPP值为131或1333原创 2022-02-02 21:13:38 · 579 阅读 · 0 评论 -
0x12 内容简介与例题习题
队列单调队列【例题】最大子序和(AcWing135)【习题】滑动窗口(AcWing154)单调队列单调队列与单调栈相似,都是利用问题的特性与队列特性相结合,是解决滑动窗口相关问题的有力工具。【例题】最大子序和(AcWing135)题目链接思路: 由于维护的最大和是连续的,我们不难想到用前缀和来优化。预处理出前缀和数组SSS之后,我们的问题转化为,找出两个数x,yx,yx,y,使得S[y]−S[x]S[y]-S[x]S[y]−S[x]最大并且满足y−x≤my - x \le my−x≤m。那么我们可原创 2022-02-01 16:01:04 · 1059 阅读 · 0 评论 -
0x11 内容简介与例题习题
栈栈与卡特兰序列【例题】进出栈序列问题(Acwing130)表达式计算对于栈的基本特性,这里就不再赘述。着重讲解与栈有关的应用以及相关习题。栈与卡特兰序列关于卡特兰序列,我会在0x36节中详细介绍。【例题】进出栈序列问题(Acwing130)题目链接思路: 细心观察我们会发现,进出栈序列符合卡特兰序列的特性,可以利用通项公式进行计算(将会在0x36节详细推导)。该通项公式为,第NNN项卡特兰数为:C2NNN+1\frac{C_{2N}^N}{N + 1}N+1C2NN。本题的核心就是计算这个原创 2022-02-01 10:55:15 · 1092 阅读 · 0 评论 -
0x07 内容简介与例题习题
贪心贪心的基本思想【例题】防晒(AcWing110)【例题】国王游戏(AcWing114)未完成题目【例题】给树染色(AcWing115)【练习】任务(AcWing127)贪心的基本思想贪心是一种在每次决策时采取当前意义下最优策略的算法。一般通过猜测得出策略之后,加以证明即可使用。通常的证明方法有以下几种:反证法邻项交换法(通过交换相邻两项,证明原决策比交换之后的决策更优)决策包容性范围扩展(证明任何对局部最优策略作用范围的扩展都不会造成整体结果变差)那我们直接来看几道例题吧。【例题】防原创 2022-01-30 21:46:03 · 699 阅读 · 0 评论 -
0x06 内容简介与例题习题
倍增倍增基本思想【例题】天才ACM(AcWing109)《算法竞赛进阶指南》读书笔记汇总这里面是我在阅读《算法竞赛进阶指南》这本书时的一些思考,有兴趣可以瞧瞧!如若发现什么问题,可以通过评论或者私信作者提出。希望各位大佬不吝赐教!倍增基本思想倍增,故名思意,就是成倍的增长。通常在递推时,由于状态空间过大使得线性时间复杂度无法满足要求,这是我们可以通过成倍增长的方式,只递推状态空间中在2的整数次幂位置上的值作为代表。当需要其他位置的值时,我们可以通过把该位置表示成若干个2的整数倍的和。这就要求原创 2022-01-21 08:22:11 · 226 阅读 · 0 评论 -
0x05 内容简介与例题习题
中位数有许多有趣的性质,我们来通过几道例题感受一下这些性质。原创 2022-01-20 09:48:29 · 839 阅读 · 2 评论 -
0x04 相关习题
二分战神C. Balanced Stone Heaps (CF763Div2)C. Balanced Stone Heaps (CF763Div2)题目链接思路:二分最小值,从后往前遍历,尽量满足当前的高度,若出现当前高度小于二分的值,那么放回false;否则返回true。AC代码:#include<bits/stdc++.h>#define N 200005using namespace std;int n;int h[N],tmp[N];bool check(int原创 2022-01-17 09:01:47 · 476 阅读 · 0 评论 -
0x04 内容简介与例题习题
二分板子整数域上的二分实数域上的二分三分求单峰函数极值板子整数域上的二分在单调递增序列aaa中查找>=x>= x>=x的数中最小的一个(也就是STL的lower_bound)while(l < r){ int mid = l + r >> 1; if(a[mid] >= x) r = mid; else l = mid + 1;}return a[l];在单调递增序列aaa中查找<=x<=x<=x的数中最大的一个while(原创 2022-01-17 08:56:11 · 550 阅读 · 0 评论 -
【算法竞赛进阶指南】学习笔记
下面是个目录呀0xFF 前言0x00 基本算法0x01 位运算0x02 递推与递归0x03 前缀和与差分0x04 二分0x05 排序0x06 倍增0x07 贪心0x08 总结与习题0x10 基本数据结构0xFF 前言一时兴起想要来更新一下,希望能把这个系列做完吧!加油!!每一章我会把书里有难度的知识点总结一下,再附上书里的一些例题与习题。平时遇到相关的习题也会加到相关习题部分。所以这是一个进阶版的博客,不适合小白阅读哦!0x00 基本算法0x01 位运算内容简介与例题习题0x02原创 2022-01-16 17:07:07 · 1676 阅读 · 0 评论 -
0x02 内容总结与例题习题
递推与递归内容总结递推与递归的宏观描述简单应用【例题】费解的开关(AcWing95)【例题】奇怪的汉诺塔(AcWing96)分形【例题】分形之城(AcWing98)习题【练习】分形(AcWing118)【练习】袭击(AcWing119)内容总结递推与递归的宏观描述对于一个待求解的问题,当它局限在某处边界、某个小范围或者某种特殊情形下时,其答案往往是已知的。如果能够将该解答的应用场景扩大到原问题的状态空间,并且扩展过程的每个步骤具有相似性,就可以考虑使用递推或者递归求解。简单应用话不多说,直接看原创 2022-01-16 16:45:44 · 466 阅读 · 0 评论 -
0x01 内容总结与例题习题
目录内容总结与例题二进制状态压缩【例题】最短Hamilton路径(AcWing91)lowbit运算习题飞行员兄弟(AcWing116)内容总结与例题二进制状态压缩有一些问题经常可以采用二进制状态压缩起来成为一个容易解决的问题。常用的操作有:取出整数nnn在二进制表示下的第kkk位:(n >> k) & 1把整数nnn在二进制表示下的第kkk位取反:n ^ (1 << k)对整数nnn在二进制表示下的第kkk位赋值1:n | (1 << k)对整数原创 2022-01-16 14:43:09 · 353 阅读 · 0 评论