自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线段树

下面是一棵支持区间加和区间乘的线段树。写线段树时应注意递归时下传的左右边界是否与目标节点符合,判断是否进行递归时所用的左右节点是否误用了当前节点的左右边界(而不是使用正确的目标区间左右边界)#include<cstdio>#define ll long longusing namespace std;const ll maxn=2e5+5;ll c,n,m,p,x,y,z,...

2019-10-23 16:53:26 93

原创 强连通分量——tarjan算法在有向图中的应用(1)

#include<cstdio>#include<algorithm>using namespace std;int n,m,head[10005],ecnt=1,x,y,cnt=1,ans;int dfn[10005],low[10005],v[10005];int s[10005],dfsc,h,c[10005],out[10005],size[10005];...

2019-10-16 16:57:06 130

原创 洛谷P4160 生日快乐

这道题是标准的暴力深搜,思想如下:因为每一块蛋糕的面积都要相同,因此切分成最小块的蛋糕的长度应该为x/n的整数倍,如图:这样,一块蛋糕就被分成了两部分,分别是我们所需的最小单元的 iii 倍和 (x−i∗mx)/mx(x-i*mx)/mx(x−i∗mx)/mx 倍,接下来,只要对每块切开的蛋糕继续用同样的方法分开,递归到把蛋糕切成所需的基本单位那么大。当蛋糕被切成基本单位大小后,就可以计算其...

2019-10-02 23:18:00 172

原创 割点——tarjan算法在无向图中的应用(1)

tarjin算法在各种各样的图论问题中有着广泛的应用。现在,我们讨论他如今算法在求无向图的割点时的应用。无向图的割点,指在一张连通的无向图中,若删去一个点及其所有连边,该无向图就不再联通,则这个点被称为这张无向图的割点。为了求割点,我们引入几个概念:(1)树边:指在dfs时被经过的边(2)回边:即非树边(3)dfs数组:即dfs序(4)low数组:每个点的子树内的点通过回边能到达的dfs...

2019-10-01 23:09:19 228

原创 P3195 玩具装箱TOY——斜率优化

#include<cstdio>#define ll long longusing namespace std;ll n,l,q[50005],tail=1,head=1,f[50005],s[50005];ll m(ll j) {return s[j]+j;}ll y(ll j) {return f[j]+m(j)*m(j);}ll k(ll i) {return 2*m...

2019-09-18 16:59:34 80

原创 ST表

st表是处理区间最大值的得力工具,它基于倍增思想,对一定长度的区间最大值进行维护。具体来说,我们建立st表 st[i][j]st[i][j]st[i][j],保存从第iii位开始的2j2^j2j个数中的最大值。其思想与线段树相似,高一级的“节点”储存了下级节点的信息和。由st表定义可知,st[i][0]=a[i]st[i][0]=a[i]st[i][0]=a[i](a[i]为原数组)。根据“高一...

2019-09-09 13:20:57 165

原创 最短路 dijkstra

许多实际问题在解决时都可以抽象成一张图,以图的形式来对数据进行处理(如洛谷P1135),在图上有一类操作十分常见,即求从一点到另一点的最短路。解决这个问题通常有dijkstra和spfa两种算法,在这里我们使用dijkstra.dijkstra是基于贪心思想的最短路算法,每次都选择最短的路径对可达的点进行更新,因此可以保证每一个被到达的点都能得到最优解。dijkstra在建立路径时采取“松弛”...

2019-09-01 14:14:28 109

原创 洛谷P1118 数字三角形

这道题是典型的深搜题,应用全排列遍历的方法可以在无特判的条件下完成。其中的几个知识点是需要复习的。杨辉三角杨辉三角定义在此不表,其为一个形似下表的数表:11 11 2 11 3 3 11 4 6 4 1(以下略)可以观察到,除每层第一个和最后一个均为1外,其中每一个数都来源于上一层与其“对应”的两个数之和,在本题中也就能对应出如下结果:a b c d ea+b b+c c+d...

2019-08-22 00:45:10 277

原创 洛谷P1967 货车运输

首先说这道题的思路:存在多条路径时求路径最大权的最小值问题,可以利用生成树的性质重建给出的图,将多路径转化为一定最优的单一路径,再在树上求LCA时统计权值来求出“路径最大权的最小值”。写这份代码的时候复习了几个重要的知识点:并查集在写生成树时,经常会用到并查集。ll find(ll x){ if(b[x]==x) return x; else return b[x]=find(b[x...

2019-08-10 00:19:44 96

原创 树状数组

树状数组是一种特殊的树,主要用来维护有前缀和性质的序列,可以在O(logn)O(logn)O(logn)内完成单点添加和查询的任务,其基本操作是lowbit运算lowbitlowbit运算的定义是求出数字在二进制下最低位的1所表示的位权。以计算机的角度看,lowbit(x)=x&(-x);计算机内部采用补码来存储数,正整数的补码是其二进制表示不变,负整数的表示是其二进制表示按位取反...

2019-08-06 11:47:21 59

原创 LCA

LCA作为树上的一种重要操作,在许多算法(如树链剖分)中作为不可或缺的基础操作,是必须掌握的内容之一。其思想是很简单的。若求LCA的两点在同一条链上,那么它们的LCA就是深度较浅的那个点;若两点分别在两棵子树上,我们就需要先保证两点深度相同,再同时向上溯源,当溯源路径相交时,它们的LCA就是路径的交点。为了加速这个“向上溯源”的过程,我们可以使用倍增算法进行加速。其代码实现主要分为两个部分:DF...

2019-08-06 10:39:09 184

原创 洛谷P1434 滑雪

90分代码:#include<cstdio>#include<cstring>using namespace std;int r,c,m[105][105],ans=1,v[105][105];int dx[5]={0,-1,0,1,0},dy[5]={0,0,1,0,-1};void s(int x,int y,int h,int l)//x,y:坐标 h:高...

2019-08-05 00:09:58 135

原创 Manacher

Manacher算法是一种用于在O(n)O(n)O(n)的复杂度下求出字符串最长子回文串的算法。例题(洛谷P3805)给出一个只由小写英文字母组成的,长度为n的字符串S,求S中最长回文串的长度(n<=11000000)由数据范围可知,只有O(n)O(n)O(n)及以下的算法才能通过这道题我们从暴力开始考虑整个问题的算法。首先,我们可以枚举所有的子串(O(n)O(n)O(n)),并一...

2019-08-03 18:52:48 71

原创 矩阵加速递推

设AAA为n∗sn*sn∗s的矩阵BBB为s∗ms*ms∗m的矩阵,则A∗BA*BA∗B的结果CCC为n∗mn*mn∗m的矩阵。给出矩阵乘法的公式: Cij=∑k=1sAikBkjC_{ij}=\sum_{k=1}^sA_{ik}B_{kj}Cij​=∑k=1s​Aik​Bkj​ 其中iii表示行,jjj表示列。简单来说,CCC矩阵中的第iii行第jjj列由AAA矩阵的第iii行和BBB矩阵的...

2019-08-02 15:33:52 304

原创 洛谷P1038 神经网络

这道题是一道带有附加条件的拓扑排序,写题时注意以下几点:1.在确定第一层的点时,由于题面提到非输入层的神经元开始时状态必然为0,因此只需要c[i]>0即可判断该点属于输入层。2.根据公式,u[i]只在计算该点的c[i]起作用,因此可以使用加法交换律,在求和之前把非输入层的u[i]减去,即c[i]-=u[i];也因此,输入层的c[i]已经规定,因此第一层不需要c[i]-=u[i]。3....

2019-08-02 10:01:54 127

原创 洛谷P1351 联合权值

70分暴力做法:枚举每一个点和与其距离为2的点,直接计算联合权值并求最大值,累加求和,复杂度为O(n^3)暴力代码:#include<cstdio>#includeusing namespace std;inthead[2000005],n,x,y,ecnt=1,w[2000005],ans1,maxn,maxm;long long ans2;struct list{...

2019-08-02 09:57:01 114

原创 树链剖分

//不要忘记取模!!!#include<cstdio>#define ll long longusing namespace std;const ll maxn=2e5+5;ll n,m,r,p,a[maxn],x,y,z;ll d[maxn],f[maxn],top[maxn],id[maxn],ws[maxn],size[maxn],dfc,wi[maxn];//树链剖...

2019-08-01 20:20:41 75

空空如也

空空如也

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

TA关注的人

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