Continuous Intervals
线段树好题呀!比赛的时候根本看不出来,赛后惊叹“学到了!”
题意:给定一个数组,求数组内有多少连续区间。“连续区间”的定义:将区间内数字按大小排序后,相邻元素差值不大于1,可以等于0。
思路:绝妙的思路!线段树+区间修改+区间最小值及最小值个数+单调栈
- 可以将“连续区间”的定义等价为:区间最大值 − - −区间最小值 + 1 +1 +1 − - −区间不同数字的个数 = 0 =0 =0;定义区间最大值为 m a x max max,区间最小值为 m i n min min,区间不同数字的个数为 c n t cnt cnt,则此表达式可写为 m a x − m i n + 1 − c n t = 0 max-min+1-cnt=0 max−min