07 2019 档案
摘要:一个数m如果有原根,则其原根个数为phi(phi(m))。特别地,对素数有phi(p)=p 1。 假设g是奇素数p的一个原根,则g1,g2,...,g(p1)在模p意义下两两不同,且结果恰好为1 p1,由此可以定义“离散对数”,与连续数学中的对数有异曲同工之妙。 离散对数又叫做
阅读全文
摘要:@ "TOC" Lucas 卢卡斯定理: (nm)=(npmp)(n(modp)m(modp))(modp) 后面部分可以递归,就是n和m在p进制下每一位的对应的组合数 证明要二项式定理 条件是P是质数 代码: 复杂
阅读全文
摘要:BSGS bsgs用于求指数方程ax≡b(modm)的解 然后令x=qtr,得到bar=aqt 然后就枚举 :q∈(0,m/t+1),r∈(0,t1) 预处理aqt,枚举r判断bar是否有$a^{
阅读全文
摘要:Miller rabin 米勒罗宾,素数探测 1. 小费马定理,本质是欧拉定理的特殊情况 即p为质数是a(p1)≡1(modp)d的充分条件 2. x2≡1(modp)即x≡1or1(modp) 于是把p 1分解成 $2^
阅读全文
摘要:求大整数gcd: 都为偶数 gcd 2,同除2 都为奇数 (a,a b) 否则偶数/2 ka = kb mod m 当且仅当 a = mod m/gcd(m.k) φ(pe)=(p−1)∗pe−1 φ(m)=m∏p|m(1−1p) 要求逆元 中
阅读全文
摘要:@ "TOC" Dijkstra堆优化 dijkstra的原理/流程? dijkstradijkstra本质上的思想是贪心,它只适用于不含负权边的图. 我们把点分成两类,一类是已经确定最短路径的点,称为"白点",另一类是未确定最短路径的点,称为"蓝点" dijkstradijkstra的流程如下::
阅读全文
摘要:@ "TOC" 定义 这里的树套树是用线段树套平衡树 线段树用来维护区间位置信息,把这个区间中的所有数插进一颗平衡树中 利用线段树信息可加的性质来维护区间k大 实现方法 问题 区间k大问题需要进行几个操作: 1. 查询k在区间内的排名 2. 查询区间内排名为k的值 3. 修改某一位值上的数值 4.
阅读全文
摘要:@ "TOC" 在做一道斯特林数的时候被卡高精。。。于是滚来写一些简单的高精 高精构造 这里使用结构体封装,方便使用 尽量避免直接赋等,会加上个On复杂度 所有函数如add(a,b)是在 a上加b ,a使用地址,速度较快 结构体 注意:length存0开始的位数,实际有效位数为0~length
阅读全文
摘要:@ "TOC" 卡特兰数 定义 fn=f0fn1+f1fn2+...+fn1f0 也即 fn=n1∑i=0fifn1i 卡特兰一般在计数题中有运用 计算方式 一般采用组合数的计算方式 由折线法可知 $f_n=
阅读全文
摘要:@ "TOC" 最近看的数数题比较多。。于是滚来写组合数学的博客 第一类斯特林数 定义 把n个不同数划分为m个圆排列的方案数 递推式 1. 如果第n个数自成一个圆,那么S1n,m=S1n1,m1 2. 否则第n个数在n1个数构成的m个圆排列中,随便加入一个圆 而
阅读全文
摘要:@ "TOC" 今天写DSU on tree 的时候发现不会写线段树合并,于是滚来写线段树合并博客 思路 对于值域相同的两个权值线段树x和y(假设把y合并到x上),每个节点有两种情况: 1. 其中至少有一个节点没有权值(!x||!y) 直接x=x+y (x==0?y:x)
阅读全文
摘要:填之前的坑。。 @ "TOC" 前言 其实也没啥写的,提高组的进阶高精也就 高精除高精 了(若是想到其他的以后再补)。 至于高精开根这些以后省选再写(退役flag高高立起) 思路 采用二分,mid 高精小数与高精大数做 ≤ 的比较 时间O(nlogn),答案int范围内log
阅读全文
摘要:@ "TOC" Tarjan 求 LCA 做法 总体思想:遍历每一个结点并使用并查集记录父子关系。 Tarjan 是一种 DFS 的思想。我们需要从根结点去遍历这棵树。 当遍历到某一个结点(称之为 x) 时,你有以下几点需要做的。 1. 将当前结点标记为已经访问。 2. 递归遍历所有它的子节点(
阅读全文
摘要:@ "TOC" rt,区间左闭右开 注意右端点初值为max+1(右边开区间 小于等于这个数(或刚好满足或差一点满足check)
阅读全文
摘要:~~因为线段树套SA求lcp写炸了,于是跑来学ST表~~ ST表是一种高效的查询静态最值的数据结构,在询问次数多的时候具有优势(O(1)查询) ST表构成:ONlogN建立,O(1)查询 建表: 1. 可以先预处理处log和bin(1 1]+1; } for(int i=1;i 图片引自 htt
阅读全文
摘要:题意: 贝西在玩一款游戏,该游戏只有三个技能键 “A”“B”“C”可用,但这些键可用形成N种(1 当贝西输入的一个字符序列和一个组合技匹配的时候,他将获得1分。特殊的,他输入的一个字符序列有可能同时和若干个组合技匹配,比如N=3时,3种组合技分别为"ABA", "CB", 和"ABACB",若贝西输
阅读全文
摘要:@ "TOC" 引入 splay是一种BST,可以维护静态区间k小 也可以当作区间树,维护区间信息( 求和,最大子段和,翻转区间,等等) 时间一般O(nlogn)(均摊),splay操作满足其稳定性 但是常数巨大,接近100,慎用 splay的构建 一个完整的splay包含以下变量: 1. fa:此
阅读全文
摘要:@ "TOC" 1、线段树实现方式 总之就是二分区间,分为左右儿子存 空间n 4,时间mlogn 模板: include include using namespace std; const long long maxn=1e6+5; long long a[maxn],d[maxn 1; tag[
阅读全文
摘要:@ "TOC" 个人总结向博客注意。。。 AC自动机_引入 对于k个模式串,我们要匹配一个文本串。 如果采用建立k个next数组的方法( kmp ),时间复杂度显然为O((mi+n) k),不可接受。 那我们就需要一种更简便的数据结构(误),来实现在可控时间范围内(O(n))内的匹配。 除此之外,A
阅读全文
摘要:@ "TOC" 1、后缀数组作用 主要用于解决最长公共前缀(lcp)问题,大多数时候此类问题都可以用sam(后缀自动机)来解决。不过应为sa算法相对更加优秀的时空复杂度,在大数据集上可以防止TMLE。 2、后缀数组的构造 1. 首先声明几个变量。 1、 Str :需要处理的字符串(长度为Len) 2
阅读全文
摘要:(初三写的,有、naiive,还是搬了) 一、引入(无兴趣看的可以略过) "经典例题:BRT Contract Codeforces Round 119 Div.1D" 题⽬描述: ⼀条笔直的马路上有 n 个红绿灯,它们从时刻 0 开始,持续 g 秒的绿灯状态,然后持续 r 秒的红灯
阅读全文