线段树
小胡同的诗
千里之行,始于足下
展开
-
蓝桥杯--2013年第四届C/C++B组省赛
题目标题: 高斯日记 大数学家高斯有个好习惯:无论如何都要记日记。 他的日记有个与众不同的地方,他从不注明年月日,而是用一个整数代替,比如:4210 后来人们知道,那个整数就是日期,它表示那一天是高斯出生后的第几天。这或许也是个好习惯,它时时刻刻提醒着主人:日子又过去一天,还有多少时光可以用于浪费呢? 高斯出生于:1777年4月30日。 在...原创 2019-02-27 19:25:49 · 428 阅读 · 0 评论 -
算法实验题11.2 整数字典问题(线段树 or 平衡树)
问题描述思路平衡树(STL – map)根据题目给的操作分别时原创 2019-09-27 20:35:54 · 114 阅读 · 0 评论 -
算法实验题4.4 逆序表问题(DP or 二分 or 线段树)
题目描述思路这个问题大致就是给你1~n数字对应的逆序数分别存到b[n]中,然后让你还原出原序列动态规划我们虽然不知道原序列长啥样,但我们知道它每个元素长啥样。并且最大那个数无论放到哪逆序数都是为0,于是先把这个数加到结果集中。问题就变成倒2个数根据逆序数考虑排倒结果集的位置,不难发现一个数字k他的逆序数s应满足0<=s<=n−k0<=s<=n-k0<...原创 2019-09-24 22:57:05 · 280 阅读 · 0 评论 -
求n个闭区间的所有交集(贪心+线段树)
问题描述:给你n个闭区间,输出这n个开区间的所有交区间,可能存在一个子区间有多次重复,一个交区间的定义是至少有两个大区间都包含它,并且答案集中要尽可能地把所有区间合并。注:为了避免歧义,头对尾交于一个点则不算交。思路:这是对于力扣986地一个拓展,如果问题约束到一个交区间最多只有两个大区间包含它,那么就可以先把区间预处理成像力扣986那样的两个递增区间,用双指针求交集。对于这个问题我们也是要...原创 2019-09-07 08:13:37 · 1519 阅读 · 0 评论 -
HDU2795(线段树+单点更新+思维)
题目链接题目大意:给一个h高,w宽的广告牌,以及n条广告的宽度,每条广告的高度默认为1,问n条广告能插上的话所在的最高行数,插入不了输入-1.解题思路:比较容易到用mlen维护区间h能够装下的最长广告的长度(未插入),n在2e5内,所以线段树最多就开8e5就足够了!之后单点更新的时候顺带返回下标。Code:#include <bits/stdc++.h>using names...原创 2019-05-14 22:55:56 · 208 阅读 · 0 评论 -
HDU1698(线段树+区间覆盖+lazytag)
题目大意:给n个数,初始化为1,每次输入一个区间端点以及数字k,把这个区间的数全设为k。最后查询整个区间的数字和。解题思路:线段树的裸题,区间更新区间查询,在打标记的时候直接赋值就行。关于延迟标记更新的时候如果发现某个区间在我们的更新区间之内,那么我们就把它的父节点更新完毕后,打个标记,表示该区间有一段任务未下放,将来用到其子区间时要完成下放的工作。然后直接结束该子树的更新任务。Code...原创 2019-05-09 20:47:35 · 203 阅读 · 0 评论 -
HDU1754I Hate It(线段树维护区间最大值)
题目链接:hdu1754题目大意:给n个数以及q组操作,操作可能是查询或者更新。问区间最大值或更新。解题思路:线段树裸题。看代码AC代码(可能是写不好2800ms卡时限过得找个快点得板子)#include <cstdio>#include <cstring>#include <cstdlib>#include <cmath>#inc...原创 2019-02-20 23:43:02 · 167 阅读 · 0 评论 -
HDU1166敌兵布阵(线段树入门,单点更新区间查询)
前言线段树是用来维护一段区间某种操作的树形数据结构,由于设计到区间,成员节点中l,r表示区间[l,r]。对于线段树的构造实际上是利用了二分的思想,从而使操作降到log级。数据结构struct Node { int l,r; int sum;};Node LTree[maxn &lt;&lt; 2];表示每个节点维护[l,r]区间的operator(这里的操作是区间和),由于二分每...原创 2019-02-20 22:43:22 · 153 阅读 · 0 评论 -
POJ3468A Simple Problem with Integers(线段树--区间更新区间查询lazy_tag)
前言树状数组解法:树状数组+区间更新区间查询线段树对于区间更新区间查询的问题直接修改更新的函数即可,但每次更新时都把子区间一同更新这样其实是相对暴力的,因为更新完的区间我们可能一次都没有访问到!这里有个关于LazyTag的优化,其实就是让某个区间更新时,只更新其父区间,而对于其子区间我们打一个标记,其含义就是:这个区间的子区间还有更新的任务没做,等到以后的查询动用到它时再临时做(注意,这个标记...原创 2019-02-24 20:51:14 · 130 阅读 · 0 评论 -
HDU3308LCIS(线段树)
题目链接:hdu3308题目大意:大致就是给一个带修改动态的序列,让你求每次询问的区间最长上升子序列的长度,这个上升子序列是连续的。思路:由于是连续的,并且是区间问题可以考虑用线段树去维护它。如何维护这个线段树呢?我们发现一个区间的LCIS得到的贡献只有三种情况:左区间、右区间、左右区间。如果维护左右区间的LCIS的长度的话到时只要取一个最大的上来即可。如何维护上升和左右区间呢?*...原创 2019-10-11 08:38:49 · 268 阅读 · 0 评论