随笔分类 -  算法基础:线段树和树状数组

摘要:问题链接:Here 长度为 N 的数列 A1AN 。回答满足以下条件的长度 N 的数列 X1XN 的个数除以 998244353 的余数。 1XiAi XiXi+1 \(2\ 阅读全文
posted @ 2021-08-08 21:15 RioTian 阅读(161) 评论(0) 推荐(0) 编辑
摘要:“在一棵树上进行路径的修改、求极值、求和”乍一看只要线段树就能轻松解决,实际上,仅凭线段树是不能搞定它的。我们需要用到一种貌似高级的复杂算法——树链剖分。 树链剖分是把一棵树分割成若干条链,以便于维护信息的一种方法,其中最常用的是重链剖分(Heavy Path Decomposition,重路径分解 阅读全文
posted @ 2020-11-30 21:01 RioTian 阅读(1270) 评论(2) 推荐(1) 编辑
摘要:最近学习了下主席树,发现比想象中简单,又发现网上的讲解比较复杂,于是自己写一篇简易的指南,较难的问题慢慢补吧。 什么是主席树呢 让我们来看一个经典的问题吧: 给定一个[1,n]的区间,m次操作,操作种类如下: 1 L R:查询[L,R]的区间和 2 L R X:将[L,R]的值加上X 这种经典问题, 阅读全文
posted @ 2020-10-20 16:32 RioTian 阅读(226) 评论(0) 推荐(1) 编辑
摘要:A题 楼兰图腾 链接:https://ac.nowcoder.com/acm/contest/1032/A 树状数组 + 逆序对 #include<bits/stdc++.h> using namespace std; #define lowbit(x) (x & -x) typedef long 阅读全文
posted @ 2020-08-02 16:27 RioTian 阅读(188) 评论(1) 推荐(0) 编辑
摘要:[kuangbin] 专题7 线段树 题解 + 总结 kuangbin带你飞:点击进入新世界 kuangbin专题十二 基础DP1 题解+总结:https://www.cnblogs.com/RioTian/p/13110438.html kuangbin专题六 最小生成树 题解+总结:https: 阅读全文
posted @ 2020-08-01 11:21 RioTian 阅读(1037) 评论(0) 推荐(1) 编辑
摘要:https://vjudge.net/problem/HDU-4027#author=SUDA2019 题意 输入n个数 然后有两种操作 输入0时将给定区间所有数都变为自己的开方 输入1输出给定区间所有数的和 虽然是区间更新 但每个点更新的不一样 因此只能对单点进行更新 其实一个点最多被更新7次 $ 阅读全文
posted @ 2020-08-01 09:58 RioTian 阅读(95) 评论(0) 推荐(1) 编辑
摘要:简介 树状数组和下面的线段树可是亲兄弟了,但他俩毕竟还有一些区别: 树状数组能有的操作,线段树一定有; 线段树有的操作,树状数组不一定有。 这么看来选择 线段树 不就 「得天下了」 ? 事实上,树状数组的代码要比线段树短得多,思维也更清晰,在解决一些单点修改的问题时,树状数组是不二之选。 原理 如果 阅读全文
posted @ 2020-08-01 09:18 RioTian 阅读(1195) 评论(0) 推荐(1) 编辑
摘要:线段树是算法竞赛中常用的用来维护 区间信息 的数据结构。 相关阅读:树状数组 线段树可以在 O(logN) 的时间复杂度内实现单点修改、区间修改、区间查询(区间求和,求区间最大值,求区间最小值)等操作。 线段树维护的信息,需要满足可加性,即能以可以接受的速度合并信息和修改信息,包括在使用 阅读全文
posted @ 2020-07-31 20:03 RioTian 阅读(7974) 评论(3) 推荐(3) 编辑
摘要:一、内容 题意:给定【1,8000】区间,给定n组操作,每次将一段区间修改成某种颜色(对上一次颜色进行覆盖),最后问你能看到多少种颜色,且每种颜色有多少段。 二、思路 题目给定的区间是**(x, y】左开右闭的区间** 进行对区间的修改即可,每次记录下lazy,修改时候pushdown。 查询的时候 阅读全文
posted @ 2020-07-31 17:15 RioTian 阅读(241) 评论(0) 推荐(0) 编辑
摘要:Mayor's posters https://vjudge.net/problem/POJ-2528#author=szdytom 线段树 + 离散化 讲解:https://blog.csdn.net/qq_35802619/article/details/98326267 #include<io 阅读全文
posted @ 2020-07-31 15:53 RioTian 阅读(207) 评论(0) 推荐(0) 编辑
摘要:敌兵布阵 HDU - 1166 多组输入,注意清除tr数组 维护一个前缀数组,耗时有点大 #include <cstdio> #include <cstring> using namespace std; const int maxn = 5e4 + 5; int t, n; int sum[max 阅读全文
posted @ 2020-07-31 10:01 RioTian 阅读(227) 评论(0) 推荐(0) 编辑
摘要:题目描述 如题,已知一个数列,你需要进行下面两种操作: 将某区间每一个数加上 k。 求出某区间每一个数的和。 输入格式 第一行包含两个整数 n,,m,分别表示该数列数字的个数和操作的总个数。 第二行包含 n 个用空格分隔的整数,其中第 ii 个数字表示数列第 i 项的初始值。 接下来 m 行每行包含 阅读全文
posted @ 2020-07-30 15:01 RioTian 阅读(137) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示