算法
文章平均质量分 70
Miao_zc
膜Hz
展开
-
主席树(可持久化线段树)
我真弱。。。连主席树都不会。。。主席树相当于多个线段树,由于相邻两棵线段树的节点的值只有少许不同,因此可以对于和前一棵树一样的子树一个指针指过去,无需操作,这样每棵树O(logn),总复杂度O(nlogn)。以下是区间K大代码:#include#include#include#define N 100005#define M 4000000using namespace st原创 2016-04-01 20:43:44 · 692 阅读 · 0 评论 -
tarjan求强联通分量
这是第一篇。。。用来记住自己掌握的算法。。。scc[i]表示点i所属强连通分量编号,sum表示强连通分量个数,pre[i]记录点i的Dfs序,序越小在栈中越靠底。low[i]表示点i往下能回到的pre最小的pre。#include#include#includeusing namespace std;int n,m,l,first[100],pre[100],scc[100],lo原创 2016-02-23 20:34:37 · 414 阅读 · 0 评论 -
可持久化treap
平衡树是一个有用的结构,但是常用的splay等由于均摊复杂度和旋转操作,无法方便的可持久化。这时候跳出一个treap,他可以可持久化!treap是一种笛卡尔树,有两个值:位置与权。这样构建出来的treap满足两个性质:1、左儿子位置小于当前节点小于右儿子,2、儿子的权值小于父亲。容易猜想,若权值随机,则树高是O(logn)。使用类似二叉堆的旋转操作可以很方便的维护treap,但是还有一原创 2017-08-06 16:15:33 · 768 阅读 · 0 评论 -
快速沃尔什变换FWT
大概在做CC月赛的时候看到了这样一道题:https://www.codechef.com/OCT17/problems/XORTREEH 题意是要你做一个%330301441的类似FWT的东西。定义数组A,B,C。定义一个操作A⊕B=CA\oplus B=C C[i]=∑u∑vA[u]B[v] | u,v在k进制下不进位的和为i 其中k=2,3,4,...,9,10C[i]=\sum_u原创 2017-10-17 20:29:58 · 969 阅读 · 3 评论