permu 莫队 总结

由于每次询问静态区间里完整值域段的最大大小

貌似很好用莫队转移,所以考虑怎么转移

当给它扩展一个数时,就是给值域添加了一个值

这个值可能已经存在,也可能是新的

有的神仙做法是维护了一个并查集,然而我这码力..

所以我用了一个更加初级的操作,给每个点打上向左连续最远和向右连续最远的标记

添加一个新点时,同时更新它的向左连续最远和向右连续最远的值的标记

 

这是添加,删除呢

目前来看,如果不记录每个点的影响及其所有后续影响及其影响前的状态,删除操作就算萎了

所以要尽量不删除

可以知道莫队有个性质,在同一个左端点分块里,右端点具有单调性

虽然左端点没单调性,但他们的范围限制在一个很小的区间里(根号N的分块里)

而且对于每个左端点分块,跑一遍O(N)的操作是没问题的

如果只想添加,不想删除的话..

每次换个分块就把计数清空,把左右端点放在分块的右端点,记录此状态state

每次拓展右边,更新state

每次拓展左边,记录拓展前的state,拓展后恢复state

这样保证了每个询问至多有个根号N复杂度的左记录和恢复

每个分块至多有个O(N)的清空

复杂度变成了O(N√N).

转载于:https://www.cnblogs.com/yxsplayxs/p/11241877.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值