ICode9

精准搜索请尝试: 精确搜索
  • 【DS】 线段树分裂&合并学习笔记2022-08-18 20:32:23

    大家好哇,我又来学数据结构了。 参考资料: 不分解的氢氧化银 模板题解 前置芝士: 线段树(废话) 动态开点 亿点树上问题基础 线段树合并 顾名思义,我们要把两颗线段树合并在一起,如图 (假设我们要维护的是权值和的信息,维护其他信息只需要稍作更改) 实现起来很简单,我们只需要把对应

  • 洛谷 P6242 【模板】线段树 3 吉司机线段树 区间取最小值 维护历史最大值和区间和2022-08-16 01:32:05

    题目背景 本题是线段树维护区间最值操作与区间历史最值的模板。 题目描述 给出一个长度为 nn 的数列 AA,同时定义一个辅助数组 BB,BB 开始与 AA 完全相同。接下来进行了 mm 次操作,操作有五种类型,按以下格式给出: 1 l r k:对于所有的 i\in[l,r]i∈[l,r],将 A_iAi​ 加上

  • 线段树----区间问题的神2022-08-16 00:00:35

    《标准线段树》    普通的线段树,其区间一般都是一个序列的数的个数,但还是要根据不同题目来判断 注意:tr[]空间是N*4,N为最大范围 《单点修改,区间查询》 原题:https://www.acwing.com/problem/content/1277/        像这道题,N最大为2*1e5,我们可以事先建立一颗最大范围1~N的

  • 线段树2022-08-15 13:30:46

    线段树学习笔记 1. 线段树简介 线段树,是一种二叉搜索树,其每一个节点表示了一段区间。 线段树支持的操作有: 区间求 和 或 最大/最小值,时间复杂度 \(O(logN)\)(p.s.后面代码均以求和为例) 有同学说:“这还不简单?我用前缀和 O(1) 就能做,要他干什么?” 不要着急,因为线段树还有这个功

  • CF559E Gerald and Path(DP)2022-08-14 18:04:53

    CF559E Gerald and Path 设 \(dp(i,p)\) 表示完成前 \(i\) 条线段的覆盖,最右端位于 \(p\) 点的最大收益。 转移?向下一条线段转移时加上他们中间的距离?发现这样没有办法统计 \(p\) 点以前的空位了! \(\color{yellow}{\bigstar\texttt{Trick}}\):如果出现上面没有办法统计 \(p\) 点以

  • 2022.8.13 颓废记录2022-08-14 01:00:26

    Preface 最后一天~ Content [CF1175E]Minimal Segment Cover 给定形如 \([l,r]\) 的 \(n\) 条线段。\(m\) 次询问,询问每次至少选几条线段才能使它们的并集包含线段 \([x,y]\)。无解输出 \(-1\)。 \(1\le n,m\le 2\times 10^5,0 \le l\lt r\le 5\times 10^5,0\le x\lt y \le 5\tim

  • 1027 求最大值 线段树维护区间内斜率的最大值2022-08-12 03:30:08

     链接:https://ac.nowcoder.com/acm/contest/26896/1027来源:牛客网 题目描述 给出一个序列,你的任务是求每次操作之后序列中 (a[j]-a[i])/(j-i)【1<=i<j<=n】的最大值。 操作次数有Q次,每次操作需要将位子p处的数字变成y. 输入描述: 本题包含多组输入

  • [ds 记录]abc263ex Intersection22022-08-11 13:04:21

    题意:给定 \(n\) 条线,求两两交点与原点距离的第 \(k\) 远值。 直接做很难,转为二分答案。现在,需要解决:给定 \(n\) 条直线,这些线在圆心原点半径为 \(k\) 的圆中有几个交点。 将直线转化为圆的弦,再将弦的端点用圆心角表示以加以离散化,问题变成了:给定若干个区间 \([l_i, r_i]\),有几对区

  • 线段树2(有加有乘)2022-08-11 10:34:07

    P3373 【模板】线段树 2 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 对于有加法和乘法两种操作遵循先乘后加 push_down(在查询或修改的区间与当前区间有交集当不完全覆盖时需要将当前结点的lazy标记传递到它的左右儿子节点,并同步修改它左右儿子的值(根据lazy标记修改) 处理左右

  • 线段树入门2022-08-10 20:31:43

    简介 常用来维护区间信息的数据结构,可以在\(Olog(n)\)的时间内实现区间修改,区间信息合并,单点修改。 结构 建树 注意:线段树空间需要开到四倍。 struct Node { int minv; } seg[N * 4]; // 根据左右儿子更新父亲节点信息 void update(int id) { seg[id].minv = min(seg[id

  • 【考试总结】2022-08-102022-08-10 19:34:06

    高三 设 \(f_i\) 表示长度为 \(i\) 的合法序列数量。尝试枚举最后一个下降序列进行转移。由于接口处的细节问题,所以要容斥。设 \(F(x)\) 表示真实计算系数,也就是说 \(\displaystyle F(x)=\sum_{i=1}^m x^i\) 。设真正的转移式为 \(dp_{i}=\sum_j dp_{j}\binom{K}{i-j}g_{i-j}\) ,那

  • 【线段树合并小记】2022-08-10 19:33:50

    问题模型 有若干颗动态开点线段树,总点数为M,现有如果按操作,操作为某个线段树上的查询,获将两颗线段树合并,这里的合并通常是同一下标对应数相加(也可以是其他形式的合并如Minimax) 算法流程 设函数Merge(x,y)表示合并x,y两棵子树,那么: 如果x为空,则直接返回y 如果y为空,则直接返回x 如果到

  • 1011 外挂 线段树 数学思维2022-08-08 21:32:38

     链接:https://ac.nowcoder.com/acm/contest/26896/1011来源:牛客网 题目描述 我的就是我的,你也是我的,记住了,狐狸!                                                                       ——韩信-白龙吟

  • 线段树2022-08-08 12:34:49

    线段树 模板 二倍空间(by Tourist) Code class segtree { public: struct node { // don't forget to set default value (used for leaves) ... a = ...; void apply(int l, int r, ... v) { // make v become node(tag,data) in modi

  • GYM103373F(线段树,子段问题)2022-08-08 10:03:21

    GYM103373F(线段树,子段问题) 题意 给定一个01串。定义01交替或者10交替的子段为交替串。 有两个操作: flip区间 \([l,r]\) 输出区间 \([l,r]\) 内交替串的数量 思路 如果有极长交替串长度,可以算出交替串数量 于是考虑维护交替串的长度。我们用线段树对其维护。 维护当前结点的答

  • 蒟蒻日记_8月2022-08-07 11:02:47

    8月开始了(其实咕咕好几天) 之前在学校宿舍里大摆烂 08-01 摆 08-02 · 【模拟赛#2】A. 硬币 贪心 赛时做法:排序+固定成本后收益关于前 \(N\) 个的数量是一个单峰函数,三分~ 正解:排序+双指针,可以贪心做 · 【模拟赛#2】C. 座位安排 线段树 直接上线段树维护一下区间最大连续段和最

  • P3582 [POI2015] KIN & ZLOJ 练习58 B2022-08-04 08:01:32

    written on 2022-08-03 套路题,是找最优区间的问题。 对于这类问题,一般的方法是使用数据结构维护相关信息,然后枚举左/右端点,找到最优的另一端点。 难道不是极其套路的吗。。为什么连这都没做上来。。 那么具体到此题,由于同一种电影如果观看多于一次,其贡献就会为 \(0\),所以在枚举端

  • P7447 [Ynoi2007] rgxsxrs 题解2022-08-01 11:32:06

    特别劝退的一道题目。 调了整整两天,码长 4.39kb -> 6.89kb 这道毒瘤题不仅卡时间,还卡空间。 题意 给定一个长为 \(n\) 的序列 \(a\),需要实现 \(m\) 次操作: 1 l r x:表示将区间 \([l,r]\) 中所有 \(>x\) 的元素减去 \(x\)。 2 l r:表示询问区间 \([l,r]\) 的和,最小值,最大值。 思路 一

  • Code For 1线段树与区间更新2022-07-30 16:02:34

    H - Code For 1 Time Limit:2000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Status Description Jon fought bravely to rescue the wildlings who were attacked by the white-walkers at Hardhome. On his arrival, Sam tells hi

  • 编程兔暑假3.5阶段集训Day3——线段树后半部分、可持久化线段树、树状数组、倍增求LCA、树上差分、三种剖分以及搜索2022-07-28 00:34:50

            我们接着昨天的讲。懒标记是线段树中一个十分重要的知识点,在线段树中进行区间修改时,暴力的做法是递归到叶子结点修改信息,复杂度达到了O(n) ,不过我们可以将这些修改操作攒起来,到了合适的时候一起修改,这就是懒标记。         对于线段树上的每一个结点,引入一个标记,

  • 线段树2022-07-26 23:32:26

    线段树可以用于解决区间问题 P3372 【模板】线段树 1 题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 kk。 求出某区间每一个数的和。 输入格式 第一行包含两个整数 n, mn,m,分别表示该数列数字的个数和操作的总个数。 第二行包含 nn 个用空格分隔

  • P4556 [Vani有约会]雨天的尾巴 /【模板】线段树合并 (树上差分+线段树合并)2022-07-24 15:02:01

    显然的树上差分问题,最后要我们求每个点数量最多的物品,考虑对每个点建议线段树,查询子树时将线段树合并可以得到答案。 用动态开点的方式建立线段树,注意离散化。 1 #include<bits/stdc++.h> 2 using namespace std; 3 const int N = 1e5 + 10; 4 struct node { 5 int

  • LG6144 [USACO20FEB]Help Yourself P【DP,组合数,线段树】2022-07-23 23:02:53

    传送门 思路 考虑 DP,设 \(f_{i,j,k}\) 表示前 \(i\) 条线段,连通块最右端的点为 \(j\) 的所有子集的连通块个数的 \(k\) 次方之和。初值 \(f_{0,0,0} = 1\),答案为 \(\sum f_{n,j,K}\)。 把线段按照左端点排序,考虑加入第 \(i\) 条线段后对答案的影响,设 \(j\) 为加入 \(i\) 之前连通

  • 树状数组2022-07-23 22:04:11

    \(emm……\),作为一个完全可以被线段树代替的数据结构,其主要优点只有代码短与常数小 然而总有无聊的出题人卡常以及类似我的蒟蒻调不出线段树,所以还是得学一下的 树状数组天然用来维护前缀和,所以支持区间修改,单点查询;单点修改,区间查询 如果非要区间修改,区间修改也不是不行: 首先差分

  • 【典】P6773 和区间有关的 dp 的一种简单状态+线段树(合并)维护dp2022-07-23 08:01:08

    拿命运做标题其实是因为最广为人知吧,主要是总结这种 dp 设计方法以及线段树维护的巧妙之处。 已知一个序列,有 \(Q\) 个区间修改(限制条件),求有多少方案数(最小最大值)。 这种区间的限制一般比较阴间,没有那么简单。 这里要介绍的一种方法就是列状态 \(f_{i,j}\) 表示 \([1,i]\) 已经

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有