-----------算法总结-------------
文章平均质量分 79
·马克图布·
如果人生真的可以分为几个阶段的话,那么我现在就在感觉自己很普通,并一无是处的那个阶段。
展开
-
算法书中的精华(连载中)
本人屯了几本算法书,打算尽快在大三结束之前汲取完。所以将其中一些有趣的地方记录下来吧,毕竟算法还是很有趣的,虽然学习的过程中常常伴随着痛苦文章目录《信息学奥赛一本通》五种常见的递推关系《信息学奥赛一本通》五种常见的递推关系1.Fibonacci数列斐波那锲数列是形如这样的数列:1、1、2、3、5、8、13、21、34、55、89,在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=...原创 2020-05-08 11:35:51 · 250 阅读 · 0 评论 -
每日算法题(连载中)
每天至少一道题目,遇到有趣的题目,就贴在这儿吧。信息学一本通 1195:判断整除思路:DP。如果考虑每个数字前的符号是正是负的话,那么就是指数级的复杂度,肯定不行。就这个这个题目的范围来看,nnn的范围1e5,而kkk的范围100。我们最后要看的是最后是否会有一种组合使其%k=0\%k=0%k=0。我们设f[i][j]f[i][j]f[i][j]表示为前iii个数的和%k\%k%k是否为...原创 2020-05-06 21:55:34 · 374 阅读 · 0 评论 -
DFS序总结
DFS序对树进行dfsdfsdfs遍历,所形成的序列就叫做树的dfsdfsdfs序。DFS序有一个很强的性质: 一颗子树的所有节点在DFS序内是连续的一段, 利用这个性质我们就可以将树形结构转化为线性结构 处理。int in[N],ou[N];int idx;int b[N];void dfs(int x,int fa){ in[x] = ++ idx; b[idx] =...原创 2020-03-31 21:21:17 · 396 阅读 · 0 评论 -
线段树总结(不看后悔系列)
线段树是算法竞赛中常用的用来维护 区间信息 的数据结构。线段树可以在 O(logN)O(log N)O(logN) 的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值)等操作。线段树维护的信息,需要满足区间可加性,即能以可以接受的速度合并信息和修改信息,包括在使用懒惰标记时,标记也要满足可加性(例如取模就不满足可加性,对444 取模然后对 333 取模,两个...原创 2020-03-20 21:43:34 · 615 阅读 · 0 评论 -
并查集总结(不看后悔系列)
在计算机科学中,并查集是一种树型的数据结构,用于处理一些不交集(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(union-find algorithm)定义了两个用于此数据结构的操作:...原创 2020-03-14 11:19:40 · 652 阅读 · 0 评论 -
树状数组总结(不看后悔系列)
最近准备学深点树状数组,在原来的文章上添写内容。定义树状数组或二元索引树(英语:Binary Indexed Tree/(BIT)),又以其发明者命名为Fenwick树,其初衷是解决数据压缩里的累积频率(Cumulative Frequency)的计算问题,现多用于高效计算数列的前缀和, 区间和。它可以O(logn){\displaystyle O(\log n)}O(logn)的时间得到任...原创 2020-03-03 19:14:50 · 553 阅读 · 0 评论 -
组合数学之隔板法
理解隔板法【定义】隔板法就是在n个元素间的(n-1)个空中插入k个板,可以把n个元素分成k+1组的方法。应用隔板法必须满足3个条件: (1) 这n个元素必须互不相异;(2) 所分成的每一组至少分得1个元素;(3) 分成的组别彼此相异。【公式】把10个相同的小球放入3个不同的箱子,每个箱子至少一个,问有几种情况?C(n-1,m-1)=C(9.2)接下来才是重点。【隔板应用】...转载 2020-02-29 20:15:00 · 2617 阅读 · 1 评论 -
最小链覆盖——Dilworth定理
Dilworth定理Dilworth定理,一言以蔽之,偏序集能划分成的最少的全序集个数等于最大反链的元素个数。——————litble狄尔沃斯定理(Dilworth’s theorem)亦称偏序集分解定理,是关于偏序集的极大极小的定理,该定理断言:对于任意有限偏序集,其最大反链中元素的数目必等于最小链划分中链的数目。此定理的对偶形式亦真,它断言:对于任意有限偏序集,其最长链中元素的数目必等于其...原创 2020-02-28 00:27:04 · 11558 阅读 · 1 评论 -
数位DP学习笔记以及数位统计问题
优化1、memset 优化 将memset提到外面给定不同limitlimitlimit值,可增加一维存储状态dp[pos][state][limit]dp[pos][state][limit]dp[pos][state][limit],或者改变dp策略(如下)2、减法优化1、hdu2089 不要62(基础入门)题意:求[a,b][a,b][a,b]中没有62和4的数的个数。dp[i]...原创 2020-02-20 23:01:20 · 293 阅读 · 0 评论 -
线段树
基本概念1、线段树是一棵二叉搜索树,它储存的是一个区间的信息。2、每个节点以结构体的方式存储,结构体包含以下几个信息: 区间左端点、右端点;(这两者必有) 这个区间要维护的信息(事实际情况而定,数目不等)。3、线段树的基本思想:二分。两个比较重要的性质:1、每个节点的左孩子区间范围为[l,mid],右孩子为[mid+1,r]2、对于结点k,左孩子结点为2*k,右孩...原创 2019-06-06 17:18:44 · 171 阅读 · 0 评论 -
树状数组与其离散化
树状数组的概念: 树状数组(Fenwick Tree,又称二叉索引树)是一个查询和修改复杂度都为log(n)的数据结构,它是利用二进制的一些特点来实现。它的功能有局限性,主要是用来动态查询连续和(或者是前缀和)的问题。它利用O(n)的附加空间复杂度,将线性的数列结构转化成树状结构从而进行跨越扫描,高效完成查询连续和。原数组为a[ ],用树状数组储存后的数组为 C[ ]来一张百度百科里...原创 2019-05-27 13:46:20 · 1079 阅读 · 2 评论 -
分块学习笔记
分块算法的基本思想是通过适当的划分,预处理一部分的信息并保存下来,用空间换取时间,达到时空平衡。分块1给定长度为N的数列A,然后输入M行操作指令。第一类指令形如“C l r d”,表示把数列中第l~r个数都加d。第二类指令形如“Q X”,表示询问数列中第x个数的值。对于每个询问,输出一个整数表示答案。区间修改,单点查询ll sum[N];int pos[N];ll add[N];...原创 2020-02-11 21:52:06 · 155 阅读 · 0 评论 -
初探莫比乌斯反演
写在开头:我于寒假开始学习莫比乌斯反演,一开始的几天并不想学习,遇到这类型的题目,要么寻求别的解法,要么直接跳过,抱着这种畏惧感,我也浪费了许多时间,后来,我终于鼓起勇气去学习,才发现虽然难,也没有想象中的那么难,于此记录学习历程。许多时候你只是缺少对面对新事物的勇气!加油积性函数积性函数指对于所有互质的整数aaa和bbb有性质f(ab)=f(a)f(b)f(ab)=f(a)f(b)f(ab)...原创 2020-01-28 18:33:23 · 203 阅读 · 0 评论 -
康托展开
定义:康托展开是一个全排列到一个自然数的双射,常用于构建哈希表时的空间压缩。 康托展开的实质是计算当前排列在所有由小到大全排列中的名次,因此是可逆的。原理介绍**X = A[0] * (n-1)! + A[1] * (n-2)! + … + A[n-1] * 0! **A[i] 指的是位于位置i后面的数小于A[i]值的个数,后面乘的就是后面还有多少个数的阶乘说明 :这个算出来...转载 2019-06-07 20:00:30 · 167 阅读 · 0 评论 -
矩阵快速幂(原理+模板)
基础知识:(会基础的直接看应用部分)(1)矩阵乘法简单的说矩阵就是二维数组,数存在里面,矩阵乘法的规则:A*B=C其中c[i][j]为A的第i行与B的第j列对应乘积的和,即:代码:const int N=100;int c[N][N];void multi(int a[][N],int b[][N],int n)//n是矩阵大小,n<N{ memse...转载 2019-07-26 01:54:08 · 476 阅读 · 0 评论 -
STL bitset
转自 -------Dalao构造const int M = 2e6 + 1005;int main(){ string a = "110011101010"; // bitset<5> s(a);//从左边选取5位赋给s bitset<20> s(a,5) ;//从a中自左到右舍弃5位 cout<<s<<...转载 2019-11-28 15:31:20 · 179 阅读 · 0 评论 -
分层图最短路讲解
分层图最短路是指在可以进行分层图的图上解决最短路问题。分层图:可以理解为有多个平行的图。一般模型是:在一个正常的图上可以进行 k 次决策,对于每次决策,不影响图的结构,只影响目前的状态或代价。一般将决策前的状态和决策后的状态之间连接一条权值为决策代价的边,表示付出该代价后就可以转换状态了。一般有两种方法解决分层图最短路问题:建图时直接建成k+1层。 多开一维记录机会信息。当然具体选...转载 2019-08-28 21:00:13 · 326 阅读 · 0 评论 -
什么是2 - SAT(翻译)
2-Satisfiability (2-SAT) Problem布尔可满足性问题布尔可满足性或简单的SAT问题是确定一个布尔公式是可满足的还是不可满足的。可满足的:如果布尔变量可以赋值,使得公式为真,那么我们就说公式是可满足的。 不可满足的:如果不可能分配这样的值,那么我们说公式是不可满足的。Examples:可以满足,因为A = TRUE和B = FALSE使F = TR...翻译 2019-11-22 22:35:17 · 1341 阅读 · 2 评论 -
计算几何 —— 线段性质
杭电课件struct Point { //点 double x, y;};struct Segments { //线段 Point A, B;}Seg[1005];double Matrix(Point a,Point b,Point c) {//行列式计算,即叉乘 double x1 = c.x - a.x; double y1 = c.y - a.y; doub...原创 2019-10-19 21:56:40 · 165 阅读 · 0 评论 -
差分约束系统
差分约束系统一、何为差分约束系统:差分约束系统(system of difference constraints),是求解关于一组变数的特殊不等式组之方法。如果一个系统由n个变量和m个约束条件组成,其中每个约束条件形如xj-xi<=bk(i,j∈[1,n],k∈[1,m]),则称其为差分约束系统(system of difference constraints)。亦即,差分约束系...转载 2019-11-16 15:47:20 · 88 阅读 · 0 评论