自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Quack

SGU ID:067782

  • 博客(11)
  • 资源 (2)
  • 收藏
  • 关注

原创 可持久化线段树笔记

可持久化数据结构主要解决有查询历史版本或者返回历史版本的操作。 可持久化线段树就是一种可持久化数据结构。 最简单的可持久化线段树的方法是对于不同的时间,都建一棵新线段树,当前时刻的线段树可以由前一时刻复制来,然后在当前时刻的线段树上面进行修改。 然而这样的可持久化线段树非常耗费内存,有一种感性的想法,就是如果当前时刻的线段树和前一时刻的线段树有共用的节点,这样这些节点就可以不用复制,直接把要修

2015-11-28 20:59:29 4216 2

原创 树链剖分笔记

树链剖分是维护树上路径的一种有力工具。支持以下操作: 修改:单点改权,单边改权,从u到v的简单路径上的点或边改权等等 修改权值的方式可以是加/减/乘/除一个值。 查询:单点查询,单边查询,查询从u到v的简单路径上的点或边权值之和/最大值/最小值等等树链剖分的主要步骤: 1、找到重儿子son,顺便维护出树的fa,size等等。重儿子就是当前节点的所有儿子中size最大的那个; 2、根据重儿子

2015-11-23 23:53:23 585

原创 高次同余笔记(三):离散对数和原根

我们来看这个方程: a,b,c在int内,c是质数。 求x在[0,c-1]内所有的解。 这个怎么搞? 那我们换个方程: 这个方程 的解很明显是 但是我们换个角度,因为开根号这个操作数论里面不好搞。 这样有 通过这个式子可以算出 这样x就是一个指数式子,不含根号了。 但是e这个东西数论里面没有啊。 注意到这个底数的选取是任意的,那么随便选一个底数记作G。

2015-11-23 00:10:56 1298

原创 POJ 3580 SuperMemo(区间树)

唯一一个要说的就是REVOLVE操作。别的在笔记上有。 可以发现REVOLVE就是把一段区间砍下来然后接在一个点后面。 那么先把这个区间砍下来(rotateto(l-1,0)rotateto(r+1,root)),然后pushup,然后找到那个点(rotateto(x,0)rotateto(x+1,root)),然后插入回去。最后pushup。#include<iostream>#includ

2015-11-22 16:28:22 590

原创 BZOJ3224普通平衡树splay,SBT代码

splay#include<iostream>#include<cstdio>#include<cstring>using namespace std;int v[100010],fa[100010],ch[100010][2],sz[100010],tot[100010],rt,n,op,x,cnt,pred,succ;char c;inline void GET(int &n){

2015-11-22 16:22:45 603

原创 splay学习笔记及模板

splay很灵活的,它既可以作为一棵二叉查找树又可以作为一棵区间树,不过不能共存。 因此从两方面来说splay。 一、splay的rotate,splay操作 splay不是特别平衡。不过splay还算是平衡树吧,是有维护平衡的方式的。 splay维护平衡的方式就是提根。查询完了某个节点,就把这个节点提根。这样经过证明每次操作是均摊log(n)的。 提根就是不停旋转,一次旋转,目标节点总可

2015-11-22 16:19:09 1702 2

原创 高次同余笔记(二):extended-baby-step-giant-step算法

终于稍微有点空了。。 我们来看这个方程: a,b,p为常数且在int内。 注意到这次p可以为合数。 先来说说p为质数或者合数有什么问题。 对于a与p互质,那么有a^phi(p)=1(mod p),对于p是素数phi(p)==p-1,所以x的取值只要在0->n-2之中取就可以了.然而如果p为合数,phi(p) < p-1,这个范围不明确,就不好分块了。而且解是否存在,有几个,也很麻烦。

2015-11-20 00:41:14 898

原创 SBT笔记和模板

一、SBT维护平衡的方式 SBT靠维护size来维护平衡。 对于以r为根的子树,SBT必须满足以下性质: 1.r的左儿子的size大于等于r的右儿子的左右儿子的size 2.r的右儿子的size大于等于r的左儿子的左右儿子的size SBT维护size很简单,就是插入++size,删除–size 维护平衡依靠maintain函数。 具体看论文。我想写这个和AVL的相似的地方。 首先

2015-11-19 17:26:29 610

原创 AVL树笔记(二):maintain,delete

先是maintain操作,它可以维护AVLTree的平衡。 有了maintain,AVLTree的insert和delete就可以不马上维护平衡,而是操作完再维护平衡了。void maintain(int &r){ if(tree[tree[r].lc].h==tree[tree[r].rc].h+2) { int t=tree[r].lc; if

2015-11-17 22:50:38 522

原创 高次同余笔记(一):baby-step-giant-step算法

我们来看这个方程: a,b,p为常数且在int内。、p是质数。 这个怎么搞? 首先x的取值肯定在0到p-1之间。 暴搜?肯定超时啊。 优化暴搜?用meet-in-the-middle? 先来说说meet-in-the-middle怎么做。 就是找一个点把[0,p-1]这个区间分成两半(一般找中点),算出前一半塞到hash表里面,再算后一半看看hash表里面有没有。 复杂度大概是上

2015-11-17 00:35:30 3019 1

原创 AVL树笔记(一):zig-zag,insert,find,predecessor,successor

AVL树就是一棵平衡的二叉查找树。 其维护平衡的方式是:维护一个平衡因子h,即子树高度,如果左子树高度和右子树高度相差2,那么就旋转把它弄平衡。 旋转是怎么转的这就不细说了,每个PPT都写了。 这个二叉树明显不平衡,可以发现全部左偏,于是右旋。 右旋就是当前节点的左儿子 的 右儿子是当前节点。 如果当前节点有右儿子,怎么办? 那么把这个右儿子拆下来然后装在当前节点的左儿子上。 如图

2015-11-16 22:35:32 2103

lucas定理扩展论文

讲述了lucas定理如何求C(n,m)%p^k

2015-08-19

NOI2015试题

NOI2015试题,有2天的题= = PDF格式的,压缩了一下

2015-07-19

空空如也

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

TA关注的人

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