自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 最短路径的求法(SPFA,dijkstra)

关于SPFA算法大致流程是用一个队列来进行维护。初始时将源加入队列。 每次从队列中取出一个元素,并对所有与他相邻的点进行松弛,若某个相邻的点松弛成功,如果该点没有在队列中,则将其入队。 直到队列为空时算法结束。判断有无负环:如果某个点进入队列的次数超过V次则存在负环

2022-04-09 09:07:04 150

原创 容斥原理的妙用

在计数时,必须注意没有重复,没有遗漏。为了使重叠部分不被重复计算,人们研究出一种新的计数方法,这种方法的基本思想是:先不考虑重叠的情况,把包含于某内容中的所有对象的数目先计算出来,然后再把计数时重复计算的数目排斥出去,使得计算的结果既无遗漏又无重复,这种计数的方法称为容斥原理。

2022-03-31 10:06:57 215

原创 分治算法,逆序对,三维偏序与CDQ分治

当我们求解某些问题时,由于这些问题要处理的数据相当多,或求解过程相当复杂,使得直接求解法在时间上相当长,或者根本无法直接求出。对于这类问题,我们往往先把它分解成几个子问题,找到求出这几个子问题的解法后,再找到合适的方法,把它们组合成求整个问题的解法。如果这些子问题还较大,难以解决,可以再把它们分成几个更小的子问题,以此类推,直至可以直接求出解为止。这就是分治策略的基本思想。

2022-03-23 16:24:19 1325

原创 树状数组的基本操作

我们想要快速求数组中下标为 x ~ y 的数的和,大家第一时间都会想到用前缀和,时间复杂度为O(1)但如果说要在线对数组进行修改的话,那用修改前缀和数组就会用O(n)的复杂度,对于q次询问,时间复杂度为O(qn),速度极不理想这是我们就可以使用树状数组来维护树状数组支持单点修改,单点查询,区间修改,区间查询等操作首先我们要知道:树状数组有一个很关键的东西,叫做lowbit,lowbit是将一个二进制数的所有高位一都去掉,只留下最低位的1,比如lowbit(5)=lowbit

2022-03-19 14:54:07 300

原创 欧拉筛的基本操作

P3383#include<bits/stdc++.h>using namespace std;const int maxn=1e8+5;bool d[maxn]={false};int pri[100005],len=0,n,t,x;void ols(){ for(int i=2;i<=n;i++){ if(!d[i])pri[++len]=i; for(int j=1;pri[j]*i<=n&&j<=len;j++){ d[p

2022-03-08 14:05:41 36

原创 tarjan缩点

#include<bits/stdc++.h>using namespace std;int now,y,n,m;const int maxn=1e3+5;struct node{ int num,v;}a[1005];vector<int>u[1005];int dfn[maxn],low[maxn],stacK[maxn*3],tim=0,top=0;bool vis[maxn];void tarjan(int now){ dfn[now]=low[now.

2022-03-08 14:04:51 74

原创 平衡树(Treap)的基本操作

平衡树(Treap)的基本操作

2022-01-24 23:47:39 473

原创 线段树的基本操作

线段树的基本操作

2022-01-23 13:33:40 399

原创 最近公共祖先(LCA)

最近公共祖先(LCA)的求法

2022-01-23 13:04:12 293

空空如也

空空如也

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

TA关注的人

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