摘要: 左偏树是可合并堆的一种实现方式,可合并堆还有其他实现方式比如斜堆,然而我这种蒟蒻只会写左偏树。 模板里的左偏树为大根堆,支持合并,查询堆顶和弹出堆顶操作,对于已经删除的位置,查询将返回-1,为了确保弹出的正常进行,模板里使用的并查集没有使用路径压缩,因此常数可能会比较大。 1 #include<st 阅读全文
posted @ 2017-04-14 21:54 h_zs 阅读(272) 评论(0) 推荐(0)
摘要: 线段树用于维护区间信息,模板使用结构体来表示线段树,这样看起来结构更加清晰,正常使用并不会用结构体。 1 #include<stdio.h> 2 #define maxn 100005 3 #define lll long long 4 struct node{int l,r;lll sum,laz 阅读全文
posted @ 2017-04-14 20:40 h_zs 阅读(131) 评论(0) 推荐(0)
摘要: 普通的快速幂 1 #include<stdio.h> 2 #define lll long long 3 lll ksm(int,int); 4 int x,n; 5 int main() 6 { 7 scanf("%d%d",&x,&n); 8 printf("%lld",ksm(x,n)); 9 阅读全文
posted @ 2017-04-14 13:19 h_zs 阅读(149) 评论(0) 推荐(0)
摘要: 单源最短路径算法,可判负环(如果一个点进队超过N次,则存在负环) 1 #include<stdio.h> 2 #define maxv 10005 3 #define maxe 500005 4 #define inf 210000000 5 int vert,edg,tot,s,fr[maxv], 阅读全文
posted @ 2017-04-14 13:12 h_zs 阅读(139) 评论(0) 推荐(0)
摘要: 用于存图的结构 在标准里,用于网络流的前向星和正常存图的前向星有区别 1 #define maxn 1000 2 struct qxx//用于正常存图 3 { 4 int tot,fr[maxn],to[maxn],nxt[maxn],w[maxn]; 5 void adde(int p,int q 阅读全文
posted @ 2017-04-14 12:47 h_zs 阅读(166) 评论(0) 推荐(0)
摘要: KMP算法用于字符串匹配 1 /*KMP*/ 2 #include<stdio.h> 3 #include<string.h> 4 char s1[1000005],s2[1005];//s1 为待匹配串,s2为模板串 5 int nxt[1005],n,m; 6 int main() 7 { 8 阅读全文
posted @ 2017-04-14 12:38 h_zs 阅读(233) 评论(0) 推荐(0)