自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 分治

1. 自上而下通过递归不断将大问题拆分成两个或多个子问题,直至被拆分出来的子问题可以通过一些简单的方法解决2. 然后再自下而上地用子问题的解求解大问题的解3. 最终我们能得到初始问题的解下面来几道典型的例题感受一下分治例题1 求逆序对有 n 个数 a1,a2,…,an,对于其中的两个数字 x,y,如果满足 x 出现的位置在 y 出现的位置前面并且 x 比y 大,则称 (x,y)为数组 a 的一个逆序对。请问数组 a 的逆序对一共有多少个?

2023-07-10 19:42:34 121 1

原创 当区间中元素值比较小时的连续子区间的最大异或和问题

既然如此如果当区间里的数比较小的时候我们可以将i从区间起点开始枚举,计算区间起点到i的异或和,且每次从0到区间里最大的数枚举,只要这个数之前在求异或和的时候出现过,那么让这个数与现在的异或和,用一个变量ans记录最大值。思路 : 首先我们可以发现如果有新加入的元素那么它肯定是老区间其中一段的异或和,那么肯定能和老区间中的某一段消掉(相同元素异或和为0)所以问题就转变成了求原序列的连续子区间的最大异或和。形象的来说 ,每次枚举一次右区间的同时就枚举一次左区间,计算连续子区间的最大异或和。

2023-07-08 02:17:45 152 1

原创 二分图

思路 : 我们可以发现除了已经给出的 不可被覆盖的点外,每个多米诺骨牌需要占两个点,那么我们其实可以将每相邻的两个点标记为不同的颜色,且一共只用两种颜色标记点。我们可以枚举每个点,如果点还没被染色,那么将其染为1并用dfs遍历这个点所在的连通块的每个点,染1染2这样交替进行,一旦发现冲突(两个相邻的点是同一个颜色)那么该图就不是一个二分图。二分图的匹配:给定一个二分图 G,在 G 的一个子图 M 中,M 的边集 {E} 中的任意两条边都不依附于同一个顶点,则称 M 是一个匹配。

2023-06-30 17:01:04 141

原创 拓扑排序

定义 : 对一个有向图构造拓扑序列,排序类似流程图那样按先干什么后干什么这样排序拿大学教学安排举个例子(图来自oi wiki)先不要考虑操作系统到数据结构那条蓝线。那么我们要先学程序设计才能学习后面的算法语言,离散数学等等。那么在拓扑序列中,程序设计就要在算法语言,离散数学这些前面。但拓扑序列并不是唯一的,比如高等数学和程序设计是互不影响的,那么在拓扑序列中高等数学和程序设计谁在前谁在后都可以现在让我们考虑操作系统到数据结构那条蓝线。

2023-06-25 23:34:26 97

原创 最小生成树

生成树 : 如果连通图G的一个子图是一棵包含G的所有顶点的树,则该子图称为G的生成树最小生成树边权和最小的生成树叫做最小生成树。如果原图不连通,则没有最小生成树求最小生成树有两种方法 : prim 和 kurskal一 . prim算法将最小生成树看做一个集合,每次选取距离集合最近的点,如果这个点不在集合中则加入集合,也就意味着这个点和集合里的点所连成的边加入了集合。最后等到所有点都加入集合则所有进入集合的边构成最小生成树。例题1 prime板子题。

2023-06-25 13:29:08 91

原创 最短路之dijkstra算法

代码源中关于dijkstra的算法介绍如下图简单来讲就是每次选出一个没被选过的离起点最近的点,松弛这个点所在的每个边,直到所有点都被选过。这样dist[n]就是起点到n的最短路。

2023-06-23 02:45:41 197 1

原创 代码源图的遍历

对于所有数据,保证 2≤n≤20000,0≤m≤100000,1≤k≤10,1≤x,y,u,v≤n,x≠y2≤n≤20000,0≤m≤100000,1≤k≤10,1≤x,y,u,v≤n,x≠y。对于所有数据,保证 2≤n≤20000,0≤m≤100000,1≤x,y≤n2≤n≤20000,0≤m≤100000,1≤x,y≤n。对于所有数据,保证 2≤n≤8,0≤m≤n(n−1)/2,1≤x,y,k≤n2≤n≤8,0≤m≤n(n−1)/2,1≤x,y,k≤n。第一行两个整数 n,m 分别表示图的点数和边数。

2023-06-13 21:28:11 79 1

原创 最短路之 Bellman-ford 算法

对于所有数据,保证 3≤n≤5000,0≤m≤10000,1≤x,y,a,b,c≤n,1≤z≤100003≤n≤5000,0≤m≤10000,1≤x,y,a,b,c≤n,1≤z≤10000,保证整张图连通并且 a,b,ca,b,c 两两不同。对于所有数据,保证 2≤n≤500,1≤m≤2000,1≤k≤10,1≤x,y≤n,1≤z≤100002≤n≤500,1≤m≤2000,1≤k≤10,1≤x,y≤n,1≤z≤10000,保证 z 是偶数。如果不存在从 x 号点到 y 号点的路径,请输出。

2023-06-13 20:45:18 306 1

原创 Educational Codeforces Round 148 (Rated for Div. 2) A-D2

​ 如果剩余操作的个数是奇数,那么我们需要把加到 an​ 处的元素拿出来,来抵消多余那一次减法,此时总共能配对 (k−n+1)/2 个 −1 ,此时数组的最小值 mn=min(f[n−1]+k−(n−1),a[n−1])|a1−a2|+|a2−a3|+⋯+|an−1−an| = |b1−b2|+|b2−b3|+⋯+|bm−1−bm| (m为b序列长度)​ 如果此时加到 n 之后剩余的个数是偶数,我们总共可以凑出来 (k−n)/2 个 −1 ,此时数组的最小值 mn=f[n]+k−n。

2023-05-14 13:46:08 343 3

原创 扩展欧几里得的推导与代码实现

由于(a,b) = (b,a-b[a/b]) 则将两个式子联立求解得  a(x-y1) + b(y-(x1-y1[a/b])) = 0。可以得出 (ax+by)%gcd(a,b) = ax%gcd(a,b)+by%(gcd,a,b) = 0+0 = 0 得证。在欧几里得算法中,递归根据的是gcd(a,b) = (b,a%b) = (b,a-b[a/b]) 在扩欧里也会用到这个结论。递归结束条件为b=0,此时x=1,y=0。所以 a%gcd(a,b) = b%gcd(a,b) = 0。

2023-05-06 17:00:22 242 2

原创 关于欧式筛和埃氏筛

i从2到遍历,将i与每个小于i的质数相乘筛去他们的乘积,直到i等于那个质数或那个质数是i的质因子的时候停下,这样子必然满足合数是由最小质因子筛去的(因为每个合数其实都可以看成一个很小的质数和一个数相乘得到)因为,i前面的数在乘2,乘3这样倍增的时候必然乘过i,则i必然不是小于i²的i的倍数的最小因子,便会出现重复标记,我们可以直接从i²后面的i的倍数进行标记。在上面的埃氏筛中,2从4开始标记合数,3从9开始标记合数。我们可以发现当扫描到i的时候,小于i²的i的倍数必然在之前就被比i小的数扫描过了。

2023-01-06 10:41:47 623 1

原创 用队列解决约瑟夫环问题

约瑟夫环(约瑟夫问题)是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依次规律重复下去,直到圆桌周围的人全部出列。这里就只实现求出最后剩下的那个人的编号。

2023-01-01 14:01:55 618 1

空空如也

空空如也

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

TA关注的人

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