首页 > 其他分享 >2023.8

2023.8

时间:2023-08-02 13:55:27浏览次数:311  
标签:min sum 三元组 最小值 分配律 加法 2023.8

1. Good Subsegments

这个已经是典中典题了。

首先考虑一个段合法等价于 \(mx - mn = r-l\),也就是 \(mx-mn-r+l = 0\),而且注意到 \(mx-mn-r+l\ge 0\),所以如果我们全局询问的话,那就是扫描线维护,然后维护一下全局的最小值以及最小值个数就行了。

然后区间的子区间计数就考虑套维护历史信息的 trick,也就是我们还是维护扫描线的过程。操作是区间加。

然后询问的东西实质上有点牛魔的:相当于给出一个区间 \([l,r]\),首先要求这些位置的历史最小值的 \(\min\),设为 \(x\),还要求出每个位置历史值 \(=x\) 的次数和。

这个东西手搓了一下竟然自己手搓出来了:考虑对每个位置维护一个三元组 \((min,cnt,sum)\),表示该位置的历史最小值,以及历史最小值个数,还有当前的值,那么原序列上的加法(对应这个三元组的乘法)是容易的:\(+a\) 等价于乘上 \((a,1,a)\);但是我们用线段树合并的话,首先就需要定义加法,然后还需要满足分配律。

加法的话比较牛魔,先不考虑分配律,那就是 \(\min\) 是两个人的 \(\min\) 取最小值;然后 \(cnt\) 跟着算,然后 \(\sum\) 也得取 \(\min\)。但是发现他好像不满足分配律:两个一样的三元组,合并起来的话以后都是要当两份算的,但是没有体现出来。所以还要记录一下有多少个位置他的 \(sum = \min sum\),这个四元组的加法乘法满足分配律,然后就可以 seg 打 lazy 维护了。

时间复杂度 \(O(n\log n)\)。

记录

标签:min,sum,三元组,最小值,分配律,加法,2023.8
From: https://www.cnblogs.com/Cry-For-theMoon/p/17600486.html

相关文章

  • 2023.8.1
    8月第一天,约好球友一起玩,早上去广场的一号球场玩了一小会儿,好久没有这么爽过了,运动完出一身汗去吃自助餐,中午十二点吃到下午2点,告别彼此坐车回家,路上买了一批冰激凌,老冰棍啥的,晚上学习了一小时半吧,有些累了,看了个电影就休息了。......
  • 2023.8.1
    今天看SROP的时候,突然想到,既然ctfwiki上讲的不是很详细,搜其他SROP的博客,里面讲的例题又和ctfwiki上的不是很一样,仅有一点参考价值。那我为什么不能直接去搜ctfwiki加上SROP这两个关键词呢?这么一搜,果然找到了符合ctfwiki上内容,又有详细解读的博客,找到的第一篇里还是有点不够详细,找......
  • 2023.8.1 英雄的力量
    题目要求返回所有的非空英雄组的力量之和,换言之,只要枚举到的所有组即可,不用管顺序如何。因此我们可以先对序列进行排序,一旦排序完成,那么max和min计算会变得非常简单。前i个数最大的一定是末端那个,最小的一定是起始那个。现在假设a,b,c,d,e五个数(已经排序)。如果现在令d为最大值......
  • 暑假集训D8 2023.8.1 补题
    C.P3029[USACO11NOV]CowLineupS有\(n\)只牛,他们各自有自己的编号(不同牛的编号可能是相同的).这些牛站在不同的位置.现在需要给这些牛拍一张照.有如下要求选定一个范围内的牛拍照,这些牛需要包含所有出现过的编号照片的成本是这个范围,因此范围越小越好已经给定所有......
  • 2023.8.1 周二:自定义异常
    1//MyException2//继承Exception的类,即为自定义的异常类3publicclassMyExceptionextendsException{4//传递数字>10,则报异常5privateintdetail;6//Alt+Insert自动添加构造方法7publicMyException(inta){8this.detail=......
  • 2023.8 Java与Python
    Java与Python都一直在各种流行编程语言中名列前茅,也有很多相似之处。作为技术人员,我们不能把自己局限在某一项技术或编程语言中,而应该能针对具体场景快速选择适合的技术解......