- 博客(22)
- 收藏
- 关注
原创 Atcoder Beginner 293 题解 A-E
判环问题,但这个题目要求比较特殊,因为题目中有这样一句话用过的绳子一端不能重复使用,这句话就决定了这个环肯定是首尾相连的环,即每个连通分量是一个环,而不是部分节点形成一个环。在首位相连的环中每一个节点的入度都是2,所以可以统计出每个节点的入度,然后利用BFS判断每一个连通分量的每个节点的度。再来看数据范围,显然是可以的,我用map来保存出现过的数字,先判断这个数字是否出现过,如果未出现再走到这个格子上,因为只能向下和向右走,也不用考虑这个格子已经走过了,又再走一遍的问题。的值可以利用快速幂在。
2023-03-23 10:45:41
297
原创 数据结构——树状数组
相比较于线段树,树状数组的作用就显得比较局限,但是它的优点就在于它的常数比较小。线段树在未优化的情况下空间复杂度为。**前言:**树状数组现在多用于解决单点修改,求前缀和工作,时间复杂度均为。树状数组总共有两个操作,首先是修改操作。,那么就要对它后面的数进行更改,它后面的数就是。,并且如果按照指数从大到小进行区间划分,那么。个区间,并且我们发现每个区间的区间长度恰好为。树状数组主要依赖于任何数都可以转化成。,有时候为了防治溢出往往要开长度为。在二进制中,最低位的。
2022-10-31 16:45:35
247
原创 马拉车(Manacher)算法
马拉车算法与KMP算法都是解决字符串问题的经典算法,为什么把它们俩个放在一起呢?这是因为它们的思想都是用前面已知的信息去更新后面的信息。
2022-10-28 08:27:06
1435
原创 动态规划之环形处理
在许多环形结构的问题中,我们都能通过枚举法,选择一个位置把环断开,变成线性结构从而进行求解,但是往往这种枚举的方式时间复杂度比较大,所以在动态规划问题中往往用二次DP法,断环为链法来避免枚举...
2022-06-17 10:22:23
754
1
原创 状态压缩DP超详解+题型解析
众所周知动态规划主要解决多阶段决策最优解问题。我们通常分析“最优子结构”、“无后效性”、“重复子问题”这三个要素去判断这个问题是否可以用动态规划问题去解决。而在解决动态规划问题时,又要从“状态、阶段、决策”这三要素进行考虑。以著名的0,10,10,1背包问题为例,我们将物品的种类作为阶段,物品只有放与不放两种状态,从前i−1i-1i−1个物品变到第iii个物品的这个过程叫做转移同时也是一个决策的过程。这是线性dp。想一想,如果将0,10,10,1背包问题改为请问每一种放置物品的方式其价值是多少,请问该怎么算
2022-06-12 21:31:32
714
原创 欧拉图详解
欧拉图欧拉图定义:欧拉回路:若存在一条从起点S出发的路径,每条边恰好只走一次,最终回到起点S的路径被称为欧拉路径。欧拉通路:若存在一条从起点S出发的路径,经过每条边一次,但是不要求回到起点S的路径被称作欧拉通路。每条路都走,而且只走一次,并且能回到起点的,是欧拉图,也称欧拉回路。每条路都走,而且只走一次,不能回到起点的,是半欧拉图,也称欧拉路径。判定方法:前提:图都是连通图无向图:当一个无向图是欧拉图时,它的所有顶点的度数都是偶数,即它没有奇度顶点。当一个无向图是半欧拉图时
2022-04-19 16:57:48
11658
原创 了解什么是BFS
第十三讲 BFSDFS复习DFS深度优先搜索,是将问题抽象成一种树结构,带着目的性的进行搜索,一路走到底,直到达到目标。深度优先搜索借助递归来实现,递归下去,回溯上来,如果没有走到底就发现下面的元素都无法满足题目要求时,则停止对该路的搜索。DFS遍历步骤(图示)从根节点1开始搜索找出与此点邻接的且尚未遍历的点遍历完所有节点后,将栈中元素弹出,DFS完成例题面积计算(深搜)分析:因为是要求闭合*围成的曲线,第一步把四周的0,以及该0的四周的0变成*号,之后再枚举0的个
2021-12-12 19:17:06
2653
原创 什么是队列?
第十二讲 队列队列定义队列是一种操作受限的线性表,只允许在表的前端(front)进行删除操作又称作出队,在表的后端进行插入操作,称为入队,符合先进先出(First in First out)的特性。在队尾插入元素叫做入队,对头删除元素叫做出队。队列实现方式队列实现方式总共有三种,一种是通过数组实现,一种通过链表实现,另一种通过stl中的模板 queue实现数组实现顺序队列定义一个数组a[N],并设置两个指针进行管理。一个指针为front指向队头,一个指针为rear指向队尾。当元素入队时,rea
2021-12-06 15:03:11
10280
原创 一篇文章带你了解栈
栈栈的定义栈是一种运算受限的线性表,它只能从一头进入或者输出元素,具有**后进先出(LIFO)**的性质。先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(bottom);栈底固定,而栈顶浮动;栈中元素个数为零时称为空栈。插入一般称为进栈(PUSH),删除则称为退栈(POP)。栈的代码实现栈的基本操作主要有以下几种种 :入栈(push)、出栈(pop)、询问、判空在信息学竞赛中
2021-11-26 10:47:09
693
原创 一篇文章带你搞懂二分
一篇文章教你搞懂二分二分整数二分实数域上二分二分查找二分答案二分到底什么是二分呢?二分二分就是一分为二。简单来说二分就是在有序序列中,通过不断的二分,进而不断地缩小范围去寻找满足我们条件的解。这只是对二分一个狭义上的理解,广义二分其实是如果有一个临界值使得临界值一边的数据满足一种性质,另一边满足另一种性质,即使不是有序的但也可以利用二分去寻找这个临界值。在信息学竞赛中,二分题目主要分为二分查找、二分答案,二分类型分为整数二分、实数域上二分整数二分在写整数二分时,可以分为两种情况,一种将数轴分为[L
2021-11-13 12:02:26
5515
6
原创 函数
函数P5735 【深基7.例1】距离函数P5736 【深基7.例2】质数筛P5737 【深基7.例3】闰年展示P5738 【深基7.例4】歌唱比赛P5739 【深基7.例7】计算阶乘P5461 赦免战俘P5740 【深基7.例9】最厉害的学生P5741 【深基7.例10】旗鼓相当的对手 - 加强版P5742 【深基7.例11】评等级P1075 质因数分解P1304 哥德巴赫猜想P1217 [USACO1.5]回文质数 Prime PalindromesP2415 集合求和P57
2020-11-13 08:45:15
129
原创 算法竞赛进阶指南——递归实现指数类型枚举
这里写自定义目录标题题目思路代码题目描述从 1~n 这 n(n<16) 个整数中随机选取任意多个,输出所有可能的选择方案。输入格式一个整数n。输出格式每行一种方案。同一行内的数必须升序排列,相邻两个数用恰好1个空格隔开。对于没有选任何数的方案,输出空行。思路1~n这n个整数中,每个整数都会有两种情况:选还是不选,所以总共有2^n种选择,这就是为什么这道题的题目叫做递归实现指数类型的枚举。枚举 通过位运算实现枚举核心函数 dfs(int number1,int state)其
2020-11-05 10:54:18
239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人