随笔分类 - 数据结构 -- 线段树
摘要:2019牛客多校训练第一场题解 题目链接 A.Equivalent Prefixes 考虑位置$i$为区间最小值的下标,那么只需要找到左边第一个值比它小的位置就行了。单调栈搞一搞就行。 Code ```cpp #include using namespace std; const int N = 5
阅读全文
摘要:P3071 [USACO13JAN]座位Seating "题目链接" 思路: 一开始把题给读错了浪费了好多时间呜呜呜。 因为第二个撤离操作是区间修改,所以我们可以想到用线段树来做。对于第一个操作,我们只需要维护suml,sumr,sum分别表示当前结点左端连续有多少个空位、右端连续有多少个空位、以及
阅读全文
摘要:洛谷P4556 雨天的尾巴 "题目链接" 题解: 因为一个点可能存放多种物品,直接开二维数组进行统计时间、空间复杂度都不能承受。因为每一个点所拥有的物品只与其子树中的点有关,所以可以考虑对每一个点来建立一颗权值线段树来维护多种物品以及其数量,然后最后在回溯时合并,这样就可以得到我们所需要的信息了。
阅读全文
摘要:今天学习了一下动态开点的线段树以及线段树合并吧 理解应该还是比较好理解的,动态开点的话可以避免许多空间的浪费,因为这类问题我们一般建立的是权值线段树,而权值一般范围比较大,直接像原来那样开四倍空间的话空间复杂度不能承受。 动态开点的代码如下: void insert(int &i, int l, i
阅读全文
摘要:题目链接:https://codeforces.com/gym/102028 B. Ultraman vs. Aodzilla and Bodzilla 题意: 两只怪兽,它们的生命和攻击分别为hpA,hpB,attA,attB,现在你要打败它们,第i回合你的攻击为i。问在承受伤害最少的前提下,攻击
阅读全文
摘要:Codeforces Round #546 (Div. 2) 题目链接:https://codeforces.com/contest/1136 A. Nastya Is Reading a Book 题意: 一本书有n个章节,之后给出每个章节所在页数范围,然后有一个人来看书看了k页,问还有多少章节没
阅读全文
摘要:P3178 [HAOI2015]树上操作 题目链接:https://www.luogu.org/problemnew/show/P3178 题目描述 有一棵点数为 N 的树,以点 1 为根,且树点有边权。然后有 M 个操作,分为三种: 操作 1 :把某个节点 x 的点权增加 a 。 操作 2 :把某
阅读全文
摘要:A Simple Problem with Integers 题目链接:http://poj.org/problem?id=3468 Description: You have N integers, A1, A2, ... , AN. You need to deal with two kinds
阅读全文
摘要:敌兵布阵 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 131926 Accepted Submission(s): 55150 题目链接:ht
阅读全文