acm算法之数据结构
魔法自动机
硕士在读,做医疗软件开发和医学图像处理。
空闲时间,做Unity相关的Demo。
展开
-
acm专题学习之线段树(二)线段树单点修改+区间最大值 HDU - 1754
题意:给你n个点,每个点有一个值,有两种操作,一种是单点修改,另一种是找出对应区间的最大值 条件:1单点修改 2 区间最大值 思路:简单的线段树基本操作 扩展:线段树去最值。和上一次的线段树不同的地方,在于这是取最大值,只需要在递归完字典点后,对父节点的操作改成取左右子树的最大值,再处理一下细节就可以了。 代码: #include <iostream&...原创 2018-08-06 10:51:23 · 377 阅读 · 0 评论 -
acm专题学习之线段树(一)线段树单点更新+求区间和 HDU - 1166
题意:给你n个点,告诉你每个点的值,然后有四种询问:增加其中一个点的值,增加其中一个点值,求一个区间的和,还有一个就是代表结束。 条件:1单点更新 2 区间求和 思路:简单的线段树基本操作 扩展: 线段树:它将每个区间划分成一些简单的区间,每个区间对应线段树中的一个节点。对于线段树中每一个非叶子节点[a,b],它的左子树区间表示为[a,(a+b)/2],右子树的...原创 2018-08-05 22:55:56 · 252 阅读 · 0 评论 -
acm专题学习之线段树(三)区间修改 POJ - 3468
题意:有n个点,每个点都有一个值,有两种操作,一种是求给定区间的和,另一种是增加给定区间的所有的点的值。 条件:1 求区间和 2 区间修改 思路:线段的基本操作区间修改。 扩展: 线段树区间修改 线段树储存:里面加多了一个mark做标记,用来记录这个区间有没有还没有没有增加的值。 线段树操作:每次修改和求和的时候,和之前相比多了一个pushdown的操作。pu...原创 2018-08-06 19:34:20 · 281 阅读 · 0 评论 -
acm专题学习之数据结构(一)划分树+POJ 2104
划分树: 1 功能:查询区间第k大 2 复杂度:logn 3 思路:主要是两步,一个是建树,一个是查询。 4 建树:找到序列的中位数,把大于中位数的扔到中位数的左边,小于中位数的扔到数的右边。这样就被分成了两个字区间,然后在子区间再重复相同的步骤,直到没有数字。(递归的过程) 使用分层的二维数组tree[20][maxn](一般十万级别的数字20层足够)。建树前需要重新排一次序,因为划分...原创 2019-05-03 12:18:54 · 314 阅读 · 0 评论 -
acm专题学习之线段树(四)应用:求区间最大连续和
问题:求某个区间的最大连续和,例如序列4 -3 6 1 7 8,询问区间[2,5]中的最大连续和,也就是[-3 6 1]的最大连续和,肯定是7。(如果序列只有正数的话是不同考虑这么麻烦的,这里主要针对的是有正数也有负数) 思路:对于这个问题,很容易想到n^2的暴力,再优化点也就是求前缀和找区间最大值和最小值,用最大值减去最小值就是答案(其中的最大最小值指的是前缀和,最大值的前缀和下标必须大于最小...原创 2019-07-30 19:48:47 · 425 阅读 · 0 评论