P7721 [Ynoi2007] rcn

二维带权数颜色。

根据套路,采用莫队套二维分块,没写过去看 P7448

一维带权数颜色谁都会,记每个颜色的上一个与其颜色相同的位置 p r e pre pre,问题转化为查询区间 [ l , r ] [l,r] [l,r] p r e < l pre<l pre<l 的数的个数。

然后转成二维数点的形式,有 n n n 个点 ( i , p r e i ) (i,pre_i) (i,prei),查询 [ l , r ] [ 0 , l ) [l,r][0,l) [l,r][0,l) 这个矩阵的和,带修。

再考虑二维,选一维度跑莫队。

剩下的就是维护 p r e pre pre,然后动态二维数点,跑 O ( 1 ) − O ( n ) \mathcal O(1)-\mathcal O(\sqrt n) O(1)O(n ) 二维分块即可。

对于散块,考虑到 p r e pre pre 独特的性质:除了有多个位置 p r e i = 0 pre_i=0 prei=0 之外其余 p r e pre pre 互不相等。于是对于 p r e i = 0 pre_i=0 prei=0 的情况,写个一维分块维护,其他均摊复杂度正确。

考虑到这个莫队删除容易,增加爆炸,故使用回滚莫队。

时间复杂度 O ( n n ) \mathcal O(n\sqrt n) O(nn ),空间复杂度 O ( n ) \mathcal O(n) O(n)

CODE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值