随笔分类 - 数据结构--线段树
摘要:题目链接:https://www.luogu.com.cn/problem/P1438 题意:输入一个数组a,支持两种操作: 1,在区间 [l , r]上加上首项为k,公差为d的数列,即a[l]上加k,a[l+1]上加k+d...a[r]上加k+(r-l)*d。 2,查询第p个数的值。 首先引出差分
        阅读全文
                
摘要:题目链接:https://codeforces.com/contest/1321/problem/E 题意:给出n件武器(攻击力a[i]和价格ca[i]),m件盔甲(防御力b[i]和价格cb[i]),p个怪物(攻击力x[i],防御力y[i],价值z[i]),开始时必须购买一件武器和一件盔甲,假设武器
        阅读全文
                
摘要:题目链接:https://ac.nowcoder.com/acm/contest/887/E 题意:给出L[i],R[i],每次添加L[i]...R[i],求出此时的中位数。 思路:因为添加的数范围为1e9,首先想到要用离散化,这里是用一个点来表示一个区间。 将右区间加一的主要目的是优化处理,将区间
        阅读全文
                
摘要:题目链接:https://ac.nowcoder.com/acm/contest/882/E 题意:n×m的矩阵,0表示可以走,1表示墙,不能通过。有q中操作,一种是改变坐标(x,y)的状态,一种是询问从(1,x)到(n,y)有多少条路径。(n,q<=5e4,m<=10)。 思路:dp、矩阵乘加线段
        阅读全文
                
摘要:题目链接:https://nanti.jisuanke.com/t/40258 题意:给长为n的数组a,有m次操作,包括单点修改和查询F(l,r),其值为所有f(i,j)的异或和,l<=i<=j<=r,即 其中 (n,m<=1e5). 思路:这种题可以用线段树来进行修改和查询,但需要先化简。对于l<
        阅读全文
                
摘要:题目链接:https://ac.nowcoder.com/acm/contest/992/K 题意:给一个大小为1e5的数组,由0 1组成,有两种操作,包括区间修改,将一段区间内的0换成1,1换成0; 区间查询,查询区间内连续1的数量。 思路:区间查询和区间修改,明显可以用线段树来做,我们先分析下复
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-3264 题意:线段树简单应用题,区间查询最大值和最小值的差。 思路:用线段树维护区间的最大值和最小值即可。 AC代码:
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-2777 题意:有L块连续的板子,每块板子最多染一种颜色,有T种(<=30)颜色,刚开始将所有板子染成颜色1,O次操作(包括将[a,b]染成颜色k,和询问[a,b]的不同颜色数),输出每次询问的值。 思路:典型的线段树的题目。用
        阅读全文
                
摘要:题目链接:https://nanti.jisuanke.com/t/38228 题意:定义一段区间的值为该区间的和×该区间的最小值,求给定数组的最大的区间值。 思路:比赛时还不会线段树,和队友在这题上弄了3小时,思路大体都是对的,但就是没法实现。这几天恶补线段树。 首先可以利用单调栈来查找满足a[i
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-2528 题意:在区间[1,1e7]内染色,依次染n(<=1e4)中颜色,给出每种颜色染色的范围,可重叠,求最终有多少种颜色。 思路:继续肝线段树。。被这题虐了一下午加一晚上QAQ。 首先要想到离散化,因为区间为1e7,直接做的
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-2828 题意:有n个人,依次给出这n个人进入队列时前面有多少人p[i],和它的权值v[i],求最终队列的权值序列。 思路:基本类似于poj2182,简化题意后即为求序列1..n中第k小的值的问题。读入数据量比较大,最好读入优化
        阅读全文
                
摘要:题目链接:https://vjudge.net/problem/POJ-2182 题意:有n头牛,从1..n编号,乱序排成一列,给出第2..n个牛其前面有多少比它编号小的个数,记为a[i],求该序列的完整编号ans[i]。 思路:最近几天开始学线段树,加油!!我们从序列最后一个开始,则可以确定ans
        阅读全文
                
摘要:题目链接:https://www.luogu.org/problemnew/show/P3373 题意:相比与模板1,这题多了一个操作,即将一段区间的数都乘k。因为乘法的优先级高,这里要采用乘法优先。实现上和模板1的差别在于: 0. 使用两个懒惰值,add表示要加的数,mul表示要乘的数,分别初始化
        阅读全文
                
摘要:题目链接:https://www.luogu.org/problemnew/show/P3372 要注意的是线段树结点数组的大小应为4*n,而不是2*n。
        阅读全文
                
 
                    
                
 
         浙公网安备 33010602011771号
浙公网安备 33010602011771号