摘要: 阅读全文
posted @ 2022-11-16 00:16 <NULL> 阅读(17) 评论(1) 推荐(0) 编辑
摘要: 树状数组 1. 绪论 树状数组本质上是一个 运用了 分块思想 的 前缀和 数组,使得查询和修改的时间复杂度都是$O(logN)$ 级别,但由于是一个前缀和数组,所以对于一些区间能做的事情还是十分有限,鉴于树状数组的实现简单,代码量少,对于问题是否使用树状数组还是线段树的情况需要自行辨别 2. 模板 阅读全文
posted @ 2022-07-16 14:42 <NULL> 阅读(443) 评论(1) 推荐(1) 编辑
摘要: 2022/4/10 队内对抗赛 禁忌の魔法 解法1: \(\sum\limits_{i=1}^{n}\sum\limits_{j=i+1}^{n}lcm(a_i,a_j)=\sum\limits_{i=1}^{n}\sum\limits_{j=i+1}^{n}\cfrac{a_ia_j}{\gcd( 阅读全文
posted @ 2022-04-10 17:36 <NULL> 阅读(54) 评论(0) 推荐(0) 编辑
摘要: P1966 火柴排队 树状数组的简单练习题目 题目要求最小化 \(\sum(a_i-b_i)^2\) 可以转化成 a数组中第K大的数要和b数组中第K大的数在同一个位置,所以先做一手离散化 然后令$pos[brr[i]] = i$ pos数组中存储的是 b数组值所对应的位置 \(new[i] = po 阅读全文
posted @ 2022-02-07 13:03 <NULL> 阅读(30) 评论(0) 推荐(0) 编辑
摘要: 堆 堆就是一种利用完全二叉树来维护数据的一种数据结构,而当我们实际使用时使用数组来存储时,树中节点与数组中的值相对应,也就是可以灵活运用完全二叉树的性质通过数组下标来维护堆。 想看Stl模板的堆请直达底部 为什么要选择堆? 堆的功能就是保持堆顶的元素最大/最小,本质上是一种排序算法,为什么不用Sor 阅读全文
posted @ 2019-08-30 21:32 <NULL> 阅读(702) 评论(0) 推荐(0) 编辑
摘要: 优先队列 "堆的传送门" 优先队列就是堆的在C++中的STL库的版本,这里放上三种声明优先队列的方式 需要导入的头文件为 默认写法 默认的队列优先级是从大到小,数据越 大 , 优先级越高 调用函数写法 这里的greater,less两个类型如果不用万能头的话,需要导入头文件,第二个vector是动态 阅读全文
posted @ 2019-08-30 21:15 <NULL> 阅读(527) 评论(1) 推荐(0) 编辑
摘要: 并查集 并查集我个人认为一种用来处理某些 特殊数据结构 的算法,其优点在于 程序简短 ,能够 快速简洁 的表达出点与点,数于数之间的关系。 这种算法有两个操作, 合并 与 查询 合并:能够 高时效 的将某一些符合题目要求的数据合并在一个 集合 中 查询:能够 高时效 的查询某个指定数据是否 存在于某 阅读全文
posted @ 2019-08-28 18:58 <NULL> 阅读(617) 评论(2) 推荐(1) 编辑