随笔分类 -  算法讲解

摘要:弦图 啥叫弦图? 定义弦为一个环中连接不相邻两个点的边。 弦图为一个图,其中任意一个长度大于3的环都包含至少一条弦。 换句话说:弦图最大的没有弦的环大小小于3 下面是一些定义: 团:团是一个点集,满足集合内的点两两连边。 最大团:图中点数最多的团。 极大团:不是其他团的子集的团。 诱导子图/ 阅读全文
posted @ 2021-03-09 20:20 _onglu 阅读(952) 评论(0) 推荐(1) 编辑
摘要:粗略看了一下网上其他题解,都是暴力跑的,也就是对于每个询问重建并查集,这样其实时间复杂度是O(n2logn)的,十分不优秀。 其实有更好的解法,就是时间倒流法,倒序处理每个询问,每个把删去一个点删边改成加上一个点加边,一遍并查集即可。 每次判断是否合并了两个以上的连通块。 注意一条边可用当且仅 阅读全文
posted @ 2021-01-21 17:34 _onglu 阅读(127) 评论(1) 推荐(0) 编辑
摘要:把这两个东西放在一起讲是因为思想很相同。 所谓分治就是把问题分而治之(?) 整体二分和按时间分治其实本质上差不多,核心思想就是:把问题划分为左右两部分,只要在划分的过程中统计完左部分对右部分的贡献,接下来在分开处理左右两部分的时候就不会受另一半的影响。 先讲按时间分治(cdq分治) 按时间分治可以用 阅读全文
posted @ 2021-01-21 10:24 _onglu 阅读(158) 评论(0) 推荐(0) 编辑
摘要:啥是莫队算法?? 莫队算法其实本质就是暴力。 但是莫队算法在暴力的时候,规划好了每一次暴力的顺序,统筹安排暴力,可以有效地降低总时间。 怎么做呢? 首先看一道例题。 P3901 数列找不同 问题要我们判断每个区间里面是不是每个数都不一样。 假设你是一个刚学会编程的人,不会任何数据结构,你会怎么办呢? 阅读全文
posted @ 2018-12-21 19:58 _onglu 阅读(321) 评论(0) 推荐(1) 编辑
摘要:啥是模拟退火 本质上是一个欧皇算法 模拟退火是一个随机算法,实际上就是优雅地碰运气。 感觉它的原理其实和二分是差不多的,就是找出一个答案,看看答案是否更优。 但是由于模拟退火并不局限于单调查找,所以它能适用于非单调的问题的求解。 怎么搞模拟退火啊? 我们看一道例题:P1337 [JSOI2004]平 阅读全文
posted @ 2018-12-15 05:11 _onglu 阅读(258) 评论(0) 推荐(0) 编辑
摘要:主席树是啥?? 主席树其实就是可持久化线段树。。。 原来听这个名字一直觉得很厉害,但是后来知道它就是可持久化线段树之后。。。 其实根本不用看网上博客口胡就能写出来了。 可持久化数据结构 可持久化数据结构就是在原来的数据结构基础上增加访问历史版本的功能。 如果不可持久化怎考虑这个问题? 有一种直接的方 阅读全文
posted @ 2018-12-15 01:44 _onglu 阅读(194) 评论(0) 推荐(0) 编辑
摘要:线性基有啥用 例题:P3812 【模板】线性基 我们有些时候会遇到类似这样的问题:给定一组数字,求异或和最大值。 我们可以用线性基来解决这个问题。 怎么构建线性基呢 那么我们怎么考虑这个问题呢? 我们可以类比于向量。 在向量中,我们可以用单位向量表示某一个方向上的单位量。并且我们能用n个单位向量导出 阅读全文
posted @ 2018-12-01 00:53 _onglu 阅读(312) 评论(0) 推荐(0) 编辑
摘要:权值线段树是什么 我们一般的线段树的节点下标是数组,而我们只要把它变成值,就能统计每个节点的数量了。 类似于桶的实现吧。 其实这个的线段树就是前缀和,也可以用树状数组来代替。 至于查询k大,只要二分就可以了。 数据范围大的时候通常先离散化数据,所以算半个离线数据结构。 直接上代码 拿洛谷的平衡树模板 阅读全文
posted @ 2018-11-19 23:16 _onglu 阅读(511) 评论(0) 推荐(1) 编辑
摘要:树链剖分有什么用 我们经常会写到这样的毒瘤题目:给你一棵树,每次对树上的一条链进行操作。 例如洛咕:P3384 【模板】树链剖分。 实现方法 那么我们怎么很快的处理这样的问题呢? 学过倍增LCA的同学应该清楚,就算是倍增,也只能找出它的几代父亲,而不能对路径上的每一个点进行修改。 我们发现对于树上链 阅读全文
posted @ 2018-11-17 15:49 _onglu 阅读(290) 评论(0) 推荐(0) 编辑
摘要:介绍 ~~模世界真是奇妙无穷~~ 我们已经很轻松地学会了乘法,加法,减法的取模运算规则。 但是我们却对除法取模毫无办法。 直接模?显然不行,例如: 30/10%3=2 (30%3)/(10%3)=0 很明显结果是不一样的。 我们这里理由倒数的思想,定义出了乘法逆元。 定义 对于 阅读全文
posted @ 2018-10-31 19:30 _onglu 阅读(284) 评论(0) 推荐(0) 编辑
摘要:介绍 组合数学算是数学中比较难(虽然被很多人看不起)的一个分类了。 我们可以用组合数学解决很多方案数有关的问题。 定义 组合数学里面有两个大的块。 一个是排列,一个是组合。 所谓排列就是在一个集合中取出的有序子集。 所谓组合就是在一个集合中取出的无序子集。 定义可能看不懂,但举个例子就很简单了。 比 阅读全文
posted @ 2018-10-31 16:05 _onglu 阅读(498) 评论(0) 推荐(0) 编辑
摘要:算法 小技巧 如何判断数轴上一个线段与其他线段相交数 数据结构 线性基 树链剖分 权值线段树 数论 组合数的研究 乘法逆元的研究 阅读全文
posted @ 2018-10-31 14:44 _onglu 阅读(293) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示