ことばがありあまれどなお、 このゆめはつづい|

trsins

园龄:3年10个月粉丝:18关注:2

【做题记录】Ynoi2015 盼君勿忘

  • Ynoi2015 盼君勿忘

题目:

一个序列,每次查询给定 l,r,p,求区间 [l,r] 中所有子序列分别去重后的和 mod p

n105


题解:

去重转化成贡献。

对于在区间 [l,r] 中的一个值 x 出现 k,则其贡献为 x(2rl+12rl+1k)

所以对于 Sk 表示所有出现次数为 k 的数的和,区间总贡献为 i=1rl+1Si(2rl+12rl+1i)

考虑如何去在转移中计算 Sk

直接用莫队去统计,但是如果直接如上述式子中枚举 k 效率退化,考虑如何快速取出所有满足条件的 k

考虑一种支持插入,删除,遍历的数据结构,那么显然可以使用链表或者 unorded_map 来维护 k

对于 2rl+12rl+1k 直接光速幂,O(n) 的预处理算出 pw1i=2i,pw2i=2in(1nn) 直接做到 O(1) 查询。

总时间复杂度 O(nm+mn),空间复杂度 O(n+m)

本文作者:trsins

本文链接:https://www.cnblogs.com/trsins/p/15815392.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   trsins  阅读(48)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示