• loj503


    题意

    loj

    做法一

    两维分别维护
    考虑求前缀和(s_i),有贡献的条件就是(s_{i-1} imes s_i<0)
    每次都是后缀加上一个值,考虑维护一个集合,集合内存二元组((min(s_{i-1,s_i}),max(s_{i-1},s_i))),集合有个tag,表示集合内的值都加上某个值
    当集合加入元素的时候,要减去tag
    考虑当tag加上delta时的贡献,考虑计算增量,ans-集合内tag的贡献+集合内tag'的贡献,贡献的统计形似(min(s_{i-1,s_i})<-tag,max(s_{i-1},s_i)>-tag),线段树维护即可

    做法二

    不统计(s_{i-1} imes s_i<0),统计补集,即(min(s_{i-1},s_i)le 0~or~max(s_{i-1},s_i)ge 0)(题目保证不会出现(s_i=0)的情况)
    即我们在做:
    插入一个数
    删除一个数
    将集合内的数加上一个值
    查询连续值域内的个数

  • 相关阅读:
    LINUX云计算40个相关问题
    sql
    补肾
    少吃食品
    抗癌食品
    爱情感言
    分布式事务的处理
    前端
    JAVA->Enum
    Sleuth+Zipkin+Log
  • 原文地址:https://www.cnblogs.com/Grice/p/13115897.html
Copyright © 2020-2023  润新知