专栏文章

CF1965B Missing Subsequence Sum

CF1965B题解参与者 1已保存评论 0

文章操作

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

当前评论
0 条
当前快照
1 份
快照标识符
@mio7syqt
此快照首次捕获于
2025/12/02 14:46
3 个月前
此快照最后确认于
2025/12/02 14:46
3 个月前
查看原文
以下区间默认整数区间。
要求构造 [1,k)(k,n][1, k) \cup (k, n]
若没有 kk 的限制,可以在二进制下构造。具体地,构造出 20,21,22,2^0, 2^1, 2^2, \dots。在选取子序列的时候相当于枚举二进制的每一位选或不选,从而能构造出所有数。
对于 [1,k)[1, k) ,相当于没有限制的情况下构造,设 d=log2kd = \lfloor \log _2 k \rfloor,则构造的序列为 {20,21,22,,2d1,k2d}\{2 ^ 0, 2 ^ 1, 2 ^ 2, \dots, 2 ^ {d - 1}, k - 2 ^ d\}。加入 k2dk - 2^d 是因为我们已经构造出了集合 S0=[1,2d)S_0 = [1, 2 ^ d),若此时添加一个数 yy,钦定必须选 yy,则新的集合为 S1={xN+x=y+p,pS00}S_1 = \{x \in \mathbb{N} ^+ | x = y + p, p \in S_0 \cup 0\}yy 可以不选,所以加入 yy 后的集合为 S0S1S_0 \cup S_1
构造出了 [1,k)[1, k) 考虑如何构造 (k,n](k, n]。发现 [k,n][k, n] 中任何数都可以表示为 ak+bak + b,其中 aN+,b[0,k)a \in \mathbb{N} ^ +, b \in [0, k)。但是 kk 是我们不希望构造的,于是考虑先构造 (k,2k](k, 2k],再构造后面的 ak+b,(a[2,+]Z)a'k + b,(a' \in [2, +\infty ] \cup \mathbb{Z})。由上面的结论,加入 k+1k + 1 可以使能构造的集合变为 [1,k)(k,2k][1, k) \cup (k, 2k],此时只需要添加 2ik,iN+2 ^ i k, i \in \mathbb{N} ^+,直到 2ikn2^ik \ge n 即可。
为什么要构造 2ik2^ik?用 2i2^i 是因为我们在构造 kk 前面的系数 aa,根据构造 [1,k)[1, k) 时的操作,我们同样枚举 aa 的二进制下的位数便可构造出连续的一段数字。
次数为 log2n\log_2 n 量级。

评论

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

正在加载评论...