专栏文章

题解:CF2039C2 Shohag Loves XOR (Hard Version)

CF2039C2题解参与者 3已保存评论 2

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
2 条
当前快照
1 份
快照标识符
@mioq2suh
此快照首次捕获于
2025/12/02 23:18
3 个月前
此快照最后确认于
2025/12/02 23:18
3 个月前
查看原文
非常好的题目,十分考验对位运算本质的理解。
文章开头先列一下等式:(下文按位与以 \land 表示,下文或位与以 \lor 表示)
0abmin(a,b)max(a,b)aba+bababa+ba+b=ab+2(ab)\begin{align} 0 \le &a \land b \le \min(a,b) \\ \max(a,b) \le &a \lor b \le a+ b \\ |a-b| \le &a \oplus b \le a+b \\ &a+b=a \oplus b+2(a \land b) \end{align}
  • \land 是按位与,本质是取交集,所以结果不超过两个数中较小的。
  • \lor 是按位或,本质是并集,因此结果不小于两数中较大的,但不超过它们之和。
  • \oplus 是按位异或,本质是不进位加法不借位减法
  • 最后一式揭示了:加法 = 不进位加法 + 进位

Problem

Easy Version Solution

给定 x,mx,m,求有多少 yy 满足 y[1,m],xyy \in [1,m],x \neq yxyx \oplus yxxyy 的因子。
x107\sum x \le 10^7 的限制让我们猜想 yy 的大小与 xx 有关,考虑为什么。
根据题意可直接推出 xy<xx \oplus y < xxy<yx \oplus y < y
由式 4 可得:
x+y2(xy)<xy<2(xy)2min(x,y)x+y2(xy)<yx<2(xy)2min(x,y)\begin{aligned} x + y - 2(x \land y) < x \Rightarrow y < 2(x \land y) \le 2\min(x, y) \\ x + y - 2(x \land y) < y \Rightarrow x < 2(x \land y) \le 2\min(x, y) \end{aligned}
xx 的上下界我们不用管,但是注意到 y<2min(x,y)y < 2\min(x, y) 对我们十分关键,这说明 yy 不会很大,有上界 2x2x,直接枚举即可。

Hard Version Solution

给定 x,mx,m,求有多少 yy 满足 y[1,m]y \in [1,m]xyx \oplus yxxyy 的倍数。
考虑分别计算 xyx \oplus yxx 的倍数,xyx \oplus yyy 的倍数,最后再想办法减去重复计算的部分。

情况 1:xyx \oplus yxx 的倍数

xy=kxxykxx+y(k2)x \oplus y=kx \Rightarrow |x - y| \le kx\le x+y(k\ge2) 结合 y[1,m]y \in[1,m] 得到 km+xxk\le \lfloor \frac{m+x}{x} \rfloor
同理可得 kmxxk\le \lfloor \frac{m-x}{x} \rfloorkk 只有 O(1)O(1) 个,枚举即可。

情况 2:xyx \oplus yyy 的倍数

xy=kykyx+y(k2)x \oplus y=ky \Rightarrow ky\le x+y(k\ge2) 得到 (k1)yx(k-1)y \le x
yy 有上界 xx,枚举即可。

情况 3:xyx \oplus y 既是 xx 的倍数也是 yy 的倍数

情况 3 是被情况 1、2 包含的,且为处理前两个情况我们枚举了所有满足约束的 (x,y)(x,y),所以可以在处理情况 1 时或处理情况 2 时同时处理情况 3。

总结

位运算可以计算上下界,熟练掌握后可以像四则运算一样推导。此外猜测 答案 / 某枚举量 比较小也是 guessforces 老生常谈的思路之一。

评论

2 条评论,欢迎与作者交流。

正在加载评论...