CF1322B Present & P3760 [TJOI2017] 异或和

CF1322B

考虑每一位的贡献,记当前位为 k

显然高位不会影响低位,那么将所有数 mod2k+1

那么第 k 位为 1 当且仅当 2kai+aj<2k+12k+1+2kai+aj<2k+2

排序+双指针可以做到 O(nlognlogA)

P3760 [TJOI2017] 异或和

同样经过一系列转化为求 aiaj 的第 k 位为 1 的对数。

高位的值无关紧要,只会存在借位的 1,同样可以直接将所有数 mod2k+1

那么得到: 2kajai<2k+12k(aj+2k+1)ai<2k+1

注意此时对 ai,aj 的大小关系有要求,只能依次加入,采用树状树组维护区间和可做到 O(nlog2A)

总结

首先是套路的将异或和拆分位计算

然后将某一位的 0/1 限制转化为范围限制。

posted @   chihik  阅读(29)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示