登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
科技
›
【题解】CF2077B Finding OR Sum
【题解】CF2077B Finding OR Sum
[ 复制链接 ]
搜娲瘠
2025-6-8 22:23:20
本文发布于博客园和洛谷,若您在其他平台阅读到此文,请前往博客园获得更好的阅读体验。
跳转链接:https://www.cnblogs.com/TianTianChaoFangDe/p/18771334。
思路
关于此题,我们首先对 \(n | x\) 变一下形,\(n | x = n + (x \& \sim n)\),也就是把 \(n\) 和 \(x\) 同时为 \(1\) 的位在 \(x\) 中删掉,这样的话,为 \(1\) 的位要么在 \(n\),要么在 \(x\),因此我们可以得出 \((x \& \sim n) + (y \& \sim n) = (n | x) + (n | y) - 2 \times n\)。
我们要得到 \((m | x) + (m | y)\) 的值,只需要把每一位上 \(x\) 和 \(y\) 的 \(1\) 的出现数量情况找出来,再根据 \(m\) 的每一位是 \(1\) 还是 \(0\) 来模拟或运算以及位运算即可。
那么我们如何在两次询问的情况下,把每一位的 \(1\) 的出现数量找出来呢?
我们注意到,在二进制位的情况下相加,当前位为第 \(i\) 位,如果第 \(i + 1\) 位和 \(i - 1\) 位都是 \(0\),则两个数的第 \(i\) 位相加只会有这两种情况:
两个 \(1\):第 \(i + 1\) 位为 \(1\),第 \(i\) 位为 \(0\)。
两个 \(0\):第 \(i + 1\) 位和 第 \(i\) 位均为 \(0\)。
一个 \(1\) 一个 \(0\):第 \(i\) 位为 \(1\),第 \(i + 1\) 位为 \(0\)。
那么,我们就可以根据上面那个式子,求一次奇数位全部变成 \(0\) 的两个数的和,把偶数位的 \(1\) 的出现次数情况求出来,求一次偶数位全部变成 \(0\) 的两个数的和,把奇数位的 \(1\) 的出现次数情况求出来。
然后,根据下面的规则逐位求解:
如果 \(m\) 第 \(i\) 位为 \(1\),那么这一位对答案的贡献就是 \(1 \ll (i + 1)\)。
如果 \(m\) 第 \(i\) 位为 \(0\),那么这一位对答案的贡献就看 \(1\) 的出现次数,如果出现次数为 \(2\),那就是 \(1 \ll (i + 1)\),如果出现次数为 \(1\),那就是 \(1 \ll i\)。
AC CODE
[code]#include #define inf 2e18#define int long longconst int N = 2e5 + 9;int ask(int x) { std::cout op; return op;}void solve(){ std::vector a(30); int tmp = 0; for(int i = 0;i < 30;i += 2) { tmp |= (1ll
题解
CF2077B
Finding
OR
Sum
相关帖子
推荐一款线程or进程间数据同步解决方案
[BJOI2018] 染色 题解
Anti-Proxy Attendance 题解
洛谷 P10936 导弹防御塔 题解
ABC310E NAND repeatedly 题解
【学习OR面试】HashMap
10.1考试T4(swap)题解
[NOI2025] 集合 题解
[省选联考 2025] 图排列 题解
洛谷P3545 题解
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
推荐一款线程or进程间数据同步解决方案
1
656
米榜饴
2025-09-10
安全
[BJOI2018] 染色 题解
0
842
郜庄静
2025-09-10
安全
Anti-Proxy Attendance 题解
0
201
俏挺喳
2025-09-14
业界
洛谷 P10936 导弹防御塔 题解
0
286
乱蚣
2025-09-16
科技
ABC310E NAND repeatedly 题解
0
929
能拘
2025-09-18
代码
【学习OR面试】HashMap
1
106
数察啜
2025-09-26
业界
10.1考试T4(swap)题解
0
801
边书仪
2025-10-01
安全
[NOI2025] 集合 题解
0
361
翁真如
2025-10-04
安全
[省选联考 2025] 图排列 题解
0
108
终秀敏
2025-10-05
安全
洛谷P3545 题解
0
870
湄圳啸
2025-10-05
回复
(1)
赖琳芳
5 天前
回复
使用道具
举报
照妖镜
用心讨论,共获提升!
vip免费申请,1年只需15美金$
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
代码
签约作者
程序园优秀签约作者
发帖
搜娲瘠
5 天前
关注
0
粉丝关注
20
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994888
dage888
999994
3934307807
993678
4
富账慕
10004
5
刎唇
9993
6
柴古香
9989
7
烯八
9972
8
匝抽
9986
9
筒濂
9977
10
孙淼淼
9983
查看更多