1674. 使数组互补的最少操作次数 ? LeetCode第217周赛的第三题,比赛时卡了一个小时,没有想到O(n)的做法。对差分不熟悉,但是最关键的还是扫描的思路没有想到。由于这道题有这么几个点比较重要,觉得应该特别记录一下。 扫描:比赛时我也想到了当选定和K处于个个区间[2, lo]、[lo, ...
分类:
编程语言 时间:
2020-12-04 11:33:41
阅读次数:
9
树套树 一种思想,就是一棵树的节点是另一颗树。 在外面的叫外层树,在里面的叫内层树。 外层树一般是, 树状数组 , 线段树 内层树一般是 平衡树 , STL , 线段树 线段树套STL /* * @Author: zhl * @Date: 2020-11-16 12:50:32 */ #includ ...
分类:
其他好文 时间:
2020-11-20 12:20:30
阅读次数:
24
哦上帝啊,如果我有罪,请叫法律来制裁我,而不是写了个线段树调好几天,这篇复健鸽了两三天了(谢罪)因为最近在和学长聊天orz(我是什么臭鱼烂虾我这就爬) 个人觉得线段树的思想比树状数组要简单些,但是代码量确实是树状数组更优美orz 树状数组是从最基础元素开始标为1,用二进制整数下标存前缀和,但是线段树 ...
分类:
其他好文 时间:
2020-11-18 13:00:22
阅读次数:
8
1. HDU1166 敌兵布阵 题目链接 题意:单点更新+区间查询(求和)。 树状数组 (218ms) #include <iostream> #include <cstdio> #include <algorithm> #include <cstring> #include <cmath> usi ...
分类:
其他好文 时间:
2020-11-01 21:18:27
阅读次数:
19
LIS 的 O(n log n) 解法 LIS 也就是 f[i] 表示以 i 为结尾的最优答案, 原数列为 a。 首先可以直接用树状数组优化一下转移的复杂度, 这个方法比较naive就不说了。 另一种方法的话, 是维护一个 g 数组, 用 g[i] 记录 f 值为 i 的最小 a 值, 易证 g[1 ...
分类:
其他好文 时间:
2020-11-01 10:37:04
阅读次数:
25
Link P4168 [Violet]蒲公英 Solve 本题是非常经典的在线求区间众数问题。因为众数不具有区间可加性(已知$[x,y]\(和\)[y+1,z]\(的众数,不能直接得到\)[x,z]$的众数),所以用树状数组或者线段树维护就特别难,我们考虑分块来做。 我们把序列分成$T$块,每块长度 ...
分类:
其他好文 时间:
2020-11-01 09:29:32
阅读次数:
16
什么是树状数组? ? 树状数组就是通过数组来模拟一种树形结构,这种树形结构能够维护区间信息。同样类似的数据结构还有线段树,线段树与树状数组相比,它的结点更多,也就是说线段树的常数更大。 ? 线段树是通过把区间二分来维护区间的信息,而树状数组是通过lowbit来维护区间的信息。 ? 以树状数组维护区间 ...
分类:
编程语言 时间:
2020-10-22 22:18:30
阅读次数:
25
本来以为有多难,结果发现是道树状数组水题... 显然,对于每一个添加的不等式,有3种情况: \(a<0\) 。此时可转换为 $x < {{a} \over } $ 。 但是,我们发现 \({a} \over {c-b}\) 这货是实数,容易产生误差,不好处理。 但我们又发现,询问的 \(k\) 一定 ...
分类:
其他好文 时间:
2020-10-13 17:40:31
阅读次数:
25
线段树 对于维护区间内的信息,我们可使用RMQ,但这种做法的缺点是无法快速修改,而线段树这种数据结构则可以实现实时的查询、修改(单点、区间)。 原理: 线段树是一种二叉搜索树,对于每个节点,他代表区间L~R的信息,而其两个子节点分别代表L~mid、mid+1~R的信息。 建树: 只需要遍历到每个叶子 ...
分类:
其他好文 时间:
2020-10-13 16:58:38
阅读次数:
18
#include <string.h> #include <stdio.h> #include #include using namespace std; int n,m,a[11000],c[11000]; //差分建树,区间更新 int lowbit(int x) { return x&-x; ...
分类:
编程语言 时间:
2020-10-06 20:10:09
阅读次数:
25