线段树
hrbust_wgq
当我们理解了一个东西的时候,所应该做的,是将这个东西放下去,好让更多的人明白和掌握;而不是举起来,以一种高姿态故作高深。这不是科学文化发展和传播的正道。有时候,所谓的“一言以蔽之”,不经意间,就“蔽”掉了求知者的热情和渴望,同时也就“蔽”掉了科学文化的健康传承。
把问题说清楚,尽可能让更多的人明白,是博客的宗旨。直达本质,直达底层,去术语化,用最通俗、最平易的语言和讲解方式说清“到底是什么”、“原来是这样”,是要努力的方向。
展开
-
P6186 [NOI Online 提高组]冒泡排序(民间数据)
P6186 [NOI Online 提高组]冒泡排序(民间数据)题意思路:1 .对于第二个操作,我们不妨模拟一下冒泡排序, 1 4 5 2 3—>1 4 2 3 5可以发现逆序对(5,2)(5,3)没了,再来一次1 4 2 3 5—>1 2 3 4 5逆序对(4,2)(4,3)没了。2 .可以发现与每个数左边比它大的数量有关 ,再来模拟上面的操作,pre[i]数组:0 0 0...原创 2020-04-21 11:15:41 · 244 阅读 · 0 评论 -
线段树解决偏序问题
E - Buses and People题意:给定 N 个三元组 (a,b,c),现有 M 个询问,每个询问给定一个三元组 (a’,b’,c’),求满足 a<=a’, b’<=b, c’<=c 的最小 c 对应的元组编号。思路:首先肯定离线排序处理,我们按照a排序,那么它之前的元组肯定都满足第一个条件。它之前的元组满足b’<=b,最小的c的下标怎么处理呢?题目说每...原创 2020-04-08 15:41:11 · 226 阅读 · 0 评论 -
URAL - 1989 【线段树||树状数组 Hash 回文串】
URAL - 1989 【线段树||树状数组 Hash 回文串】题目链接题目描述:给你一个字符串(|s|<=1e5),有Q次询问,1可以单点修改字符,2或者给你区间L,R,问你这个字串是不是回文串。(Q<=1e5)思路:暴力必然超时。如果没有点修改,怎么快速判断子串是不是回文串?当然是hash了,类似于一个前缀和的求取。然后点修改会影响hash值,每次修改之后就要重新O(n)更新...原创 2019-09-11 12:18:02 · 231 阅读 · 0 评论 -
POJ 2886 【线段树&&反素数&&约瑟夫循环】
POJ 2886 【线段树&&反素数&&约瑟夫循环】题目链接题意:给你n,k<=5e5,n是人数下面还会给你n个人的信息,k是初始位置,每次都会根据当前的位置大于0决定顺时针走a[i],否则就走逆时针a[i],循环的次数就是小于n的因子最大的那个。题意是这样思路:1.首先要确定循环次数,暴力找5e5以内因子数最大的那个n*sqrt(n),加上多组肯定超...原创 2019-09-14 09:53:37 · 152 阅读 · 0 评论 -
POJ 3225 线段树区间异或
POJ 3225 线段树区间异或题目链接题意:对于一个空集合,有五种操作,每次给你一个op和区间[a,b],(a,b),[a,b),(a,b]其中的一种;进行区间异或或者全部置0,1操作,问你最后的区间是什么。**思路:**肯定是线段树区间更新,首先我们有很多难点要控制。1.区间开闭转化成单点问题,就是区间都扩大2倍,那样a-a+1之间的开区间就能用数字表示,输出的时候还要倒回来。2.区...原创 2019-09-16 09:50:02 · 340 阅读 · 0 评论 -
CF 242E [线段树区间亦或+求和]
CF 242E [线段树区间亦或+求和]题目链接题意:给你n个数,有两种操作,op=1,对从l到r的数求和,op=2,对从l到r的值xor val。思路:由于亦或是位运算,我们可以考虑位运算的关系,1 xor 1=0,0 xor 1=1,1 xor 0=1;0 xor 0=0;可以看出0 xor x=x;1 xor 1=0,1 xor 0=1,就是1变0,0变1;我们把每个数都...原创 2019-09-16 16:25:06 · 268 阅读 · 0 评论 -
HDU 4428 [线段树]
HDU 4428 [线段树%]题目链接题意: 给你一个空set,三种操作.1.add val;2.del val;3.sum (求下标%5=3的和)思路:STL||数组模拟都能过,但时间都是1000ms+,下面介绍一种线段树的做法。1.前两个操作都是单点更新,数据范围1e9,肯定要离散化。2.下标%5=3,肯定是区间求和,维护一个sum[5],代表下标%5之后的和。3.建树...原创 2019-09-16 18:34:19 · 126 阅读 · 0 评论 -
HDU 4251 【线段树+dp】
HDU 4251 【线段树+dp】传送门题意: 给你一个长度为n的序列,找出最长上升子序列而且相邻元素之间的下标差值大于d,输出最长的.思路: 一看是个LIS,但是这里要求下标大于d,改写dp之后也是O(n^2)。1.if(a[i]>a[j]&&i-j>d) dp[i]=max(dp[i],dp[j]+1);2.从dp方程可以看出来,我们如果要减少复杂度,...原创 2019-09-17 21:51:25 · 168 阅读 · 0 评论