自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(13)
  • 收藏
  • 关注

原创 【week2day4笔记】平衡树

一、二叉搜索树(二叉排序树、二叉查找树) BSTBST基本性质BST是一棵二叉树若这棵树的左子树不为空,则左子树上所有节点的值都小于根节点的值若这棵树的右子树不为空,则右子树上所有节点的值都大于根节点的值这棵树若存在左、右子树,则左右子树也分别是BSTBST的构建/插入每个新元素的插入从BST的根节点开始,进行如下操作:①若当前位置为空,则在当前位置插入此元素,退出函数②若当前位...

2020-05-17 23:38:09 180

原创 【week2day3笔记】字符串初步

KMPKMP用于快速匹配字符串,查出一个串在另一个串中出现的位置及次数。KMP的核心是失配数组的构建以及应用。失配数组:习惯命名为next[],next[i]中存储信息含义是: 字符串前i位构成的字串中,若存在该串的某一前缀与后缀完全相同,则存储满足该条件的最长前缀/后缀长度(next[1]记为0)。如串abab,next[1]=0,next[2]=0,next[3]=1,next[4]=2...

2019-08-08 00:12:36 119

原创 【week2day2笔记】图论基础

基本概念图G是一个有序二元组(V,E),其中V称为顶点集(Vertices Set), E称为边集(Edges set),它们亦可写成V(G)和E(G)。E的元素都是二元组,用(x,y)表示,其中x,y∈V。图的存储方式(仅记录本人常用的链式前向星)struct EDGE{ int v; int w; int next;}edge[MAX_E];int he...

2019-08-07 00:23:00 149

原创 【week2day1笔记】动态规划基础

动态规划是一种用空间换取时间的算法思路(这一点类似于记忆化搜索),利用存储数据避免重复计算相同的子问题。与记忆化搜索不同的是,记忆化搜索常常以递归的形式表现,而动归往往应用了递推的思想。动归与贪心一样,需要满足最优子结构与无后效性原则。0-1背包有 n 件物品和一个容量为 C 的背包。第 i 件物品的重量是 w[i],价值是 v[i]。求解将哪些物品装入背包可使价值总和最大DP数组: f ...

2019-08-05 23:35:05 109

原创 【week1day5笔记】搜索

深度优先搜索对于一种情况,直接搜索到边界再进行回溯(有爆栈风险)广度优先搜索往往需要用到队列,一层一层地向下搜索迭代加深搜索兼有深搜与广搜地思路,设置深度上限,依次进行深度优先搜索,当搜索了该深度上限下所有情况时,加深深度继续进行搜索记忆化搜索搜索时记录已搜索过的情况结果,省去下一次搜索的时间,思路上与动态规划有一定相似之处双向搜索状态保存①直接数组保存...

2019-08-05 21:53:01 70

原创 【week1day4笔记】数论初步

素数相关(1)欧拉筛法欧拉筛法是竞赛中常用的素数筛法,但实际情况下其效率可能仍不能满足竞赛中苛刻的数据与时间要求,对于初学者而言是一种很有效的求素数手段。欧拉筛法基本思路:1、默认所有数字都是素数,0,1除外2、从2开始,若此数字被认为是素数,将其存入一个用于存储素数的数组。3、扫描整个存储数组(包括刚刚存入的素数),将当前数字与扫描到的素数的乘积标记为非素数void Get_pri...

2019-08-01 23:51:08 125

原创 【week1day3笔记】贪心

(今天的学长开场都没怎么具体讲贪心的概念,直接开始讲题了,我就自己总结一点吧)贪心的思路,简单地说就是对于一个问题,对于它分支出的每一个局部小问题都选择最优解,从而得到整体最优解。贪心应该更被认为是一种解题策略而非算法。使用贪心策略,需要问题的最优解包含子问题的最优解,即得到子问题最优解便得到了整体的最优解(具有最优子结构),并且某阶段的状态一旦确定,则此后过程的演变不再受此前各种状态及决策的...

2019-07-31 23:20:16 89

原创 【week1day2笔记】STL基础

STL由三部分构成:容器,算法与迭代器。对STL的合理使用可以大幅缩短代码,减少编写时间。但在一些情况下,STL的运行效率弱于手写算法与数据结构,有造成TLE的风险。容器与迭代器常用容器:线性容器:array, vector, deque, forward_list, list相关性容器:set, map, multiset, multimap无序相关性容器:unordered_se...

2019-07-30 23:43:46 124

原创 【week1day1笔记】二分答案与三分答案

二分答案二分答案法,基本思路是对需要求解的答案,在其可能范围内反复取中值,验证中值是否为可行解,根据中值判定结果选择保留左半部分或右半部分,从而快速分割求解范围,达到将时间复杂度由O(n)简化到O(logn)的结果可二分性使用二分答案前需要对问题进行分析,若该问题抽象化形成的函数是单调的,便可考虑使用二分答案法求解。可能的关键字:“使……其中的最小值最大”写法二分答案的一个关键点在于二...

2019-07-29 23:12:45 269

原创 【模板】计算几何基础

一、点乘设两向量(Xa,Ya),(Xb,Yb)则两向量的点乘为XaXb+YaYb两向量的点乘=两向量长度乘积×cos两向量夹角由此可利用点乘求出向量长度,以及两向量夹角len=sqrt(Xa2 +Ya2)ang=arccos[(XaXb+YaYb)/(sqrt(Xa2 +Ya2)*(sqrt(Xb2 +Yb2)))转化为代码如下typedef struct node{ d...

2019-05-26 23:58:26 119

原创 【复习】线段树(3)区间修改与lazy标记——标记永久化

对线段树的lazy标记,分别有“标记下传”与“标记永久化”两种操作思路,上一篇写了“标记下传”,这一篇写“标记永久化”。“标记永久化”与“标记下传”相比,区别在于“标记永久化”在更新节点时,就一次性将所有需要更改的节点的标记修改完成,查询时无需对标记进行修改。以查询信息为区间和为例,用“标记永久化”思路进行解题。存储信息用的数组同样需要两个,sum[]记录区间和,add[]记录区间增加标记。...

2019-05-11 21:04:27 596

原创 【复习】线段树(2)区间修改与lazy标记——标记下传

在需要对线段树进行区间修改(如给整个区间加减某一值,或全部改为某一值)时,若反复使用之前的单点修改,那么算法的时间复杂度将达到一个恐怖的级别(单次修改nlogn,超出了不用线段树的时间复杂度),因此要引入“标记”思想。先看仅需区间修改与单点查询的解决思路:对[1,n]的[l,r]子区间进行修改:整体加k依照已有的线段树,将[l,r]划分为m个子区间(所有划分方法中取m最小情况),对每个区间设...

2019-05-01 23:15:30 519

原创 【复习】线段树(1)构建,区间查询与点修改

线段树的基本作用是对一个确定区间的各个子区间进行高效修改和查询。线段树基本结构如图(设区间为1-6):从1 - 6 总区间开始,每个区间有一个节点,这一个节点有两个子节点分别对应左半子区间和右半子区间,直到节点对应区间长度为1。每个节点可以记录一些特定信息,这个特定信息又与子节点的信息相关,当进行区间信息查询时,若一个区间完全处于查询区间内,则可以直接返回这个区间的信息,而不用继续查询它的...

2019-04-20 23:00:36 111

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除