【luogu CF1553F】Pairwise Modulo(树状数组)(根号分治)
Pairwise Modulo
题目链接:luogu CF1553F
题目大意
给你一个序列,对于每个前缀,要你求两两互相取模的结果的和。
思路
考虑新加入一个数增加的答案。
那就是加两个部分:
然后分别考虑。
不过有一个通用的化法就是
然后:
那就看怎么算两个的右边。
发现第二个是好搞的,直接枚举 的值,然后查询 里面有多少个之前的数,用树状数组维护求即可。
然后 所以复杂度为
然后再看第一个,发现直接不好问,但是考虑从贡献的数的角度来看,那也看下取整的部分,它的多少倍就要让自己贡献多少次。
于是考虑每次放进去一个数 ,就把它倍数的所有位置都加上 ,然后询问的时候直接问 的和即可,也是树状数组维护。
然后也是枚举倍数,也是树状数组,所以也是 的。
然后有一种根号分治的做法,但是复杂度会劣到 ,但也能过。
其实两种的想法差不多,这里只说第一个。
我们设定一个阀值 ,当数 的时候,我们暴力取模加入答案。
当 ,这个时候模 的结果只有 种(不确定是不是这个不是很会分析),我们考虑枚举这些,然后找到对应的范围,也用树状数组查询数量。
然后当 的时候,复杂度是
代码
__EOF__

本文作者:あおいSakura
本文链接:https://www.cnblogs.com/Sakura-TJH/p/luogu_CF1553F.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/Sakura-TJH/p/luogu_CF1553F.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
标签:
分治
, 线段树 & 树状数组
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构