闲话 22.12.25

闲话

今天本来想推秘密的 UFO by ナユタン星人 feat. 可不
然后发现存流发新翻唱了
居然!居然!是《再会》的翻唱!
再会 by はるまきごはん, covered by 存流

所以今天推两首歌!

一般公开赛 rk50- 是不是就可以半年不用考虑掉比赛咕值了啊

ABC283

本来想写类欧的 先咕着 lp 也是

赛时:
image

我的评价是 \(n / m\to (n - r)/m\)

\(\text{A} \sim \text{D}\)

略。你看看这 gap!

image

\(\text{E}\)

考虑直接枚举每一行和上下两行的翻转情况。
如果该状态可行就从该状态确定的上行对应的两个状态转移过来较小值。

复杂度是 \(O(8nm)\) 的。

Submission.

\(\text{F}\)

考虑这是个二维偏序的形式,是两点的曼哈顿距离。于是这就是弱化版天使玩偶。
树状数组模拟即可。

复杂度 \(O(n\log n)\)

Submission

\(\text{G}\)

重写题意如下:
给定 \(\mathbb F_2^{60}\) 空间内的 \(n\) 个向量,你需要求出它们的张成中第 \([l,r]\) 小的元素。

首先考虑第 \(k\) 小如何求得。

我们求出该张成的一组异或线性基 \(L\),满足任意一维只存在一个向量在这一维取 \(1\)。由于张成中任意向量 \(\textbf u\) 都可以被唯一地表示为线性基中一组向量的异或,\(L\) 中任意一个子集都可以不重不漏地构成原张成中一个向量。

\(L\) 的大小为 \(x\)\(L\) 中第 \(0\le i < x\) 小的元素为 \(L_i\)\(k\) 在二进制下的第 \(i\) 位为 \(k_i\)。不难发现第 \(k\) 小即为

\[\bigoplus _{i = 0}^{x-1} k_i \times L_i \]

其中 \(\bigoplus\) 表示异或。

随后考虑如何由第 \(k\) 小生成第 \(k + 1\) 小。

\(k\)\(k + 1\) 写作二进制后可以发现,\(+1\) 使得 \(k\) 最后的一段 \(1\) 变为了 \(0\),最低的 \(0\) 变成了 \(1\)。记 \(k\) 中最低的 \(0\) 位于第 \(p\) 位,我们只需要将原先的答案异或 \(\bigoplus_{0\le i\le p} L_i\) 即可得到 \(+1\) 后的答案。这点可以通过预处理 \(L_i\) 的前缀异或值在 \(O(1)\) 的复杂度内完成。

总时间复杂度为 \(O(n\log n + (r - l))\),其中线性基的大小为 \(O(\log n)\)

Submission.

\(\text{Ex}\)

考虑将 \(\text{popcount}(n)\) 表出。记 \(k = \lfloor\log n\rfloor\)。我们分别考虑每一位的 01 性,有

\[\begin{aligned} & \ \text{popcount}(n) \\ = \ & \sum_{i = 0}^{k} \left\lfloor \frac{n}{2^i} \right\rfloor \bmod 2 \\ = \ & \sum_{i = 0}^{k} \left\lfloor \frac{n}{2^i} \right\rfloor - 2 \left\lfloor \frac{n}{2^{i + 1}} \right\rfloor \\ = \ & \sum_{i = 0}^{k} \left\lfloor \frac{n}{2^i} \right\rfloor - 2 \sum_{i = 1}^{k} \left\lfloor \frac{n}{2^i} \right\rfloor \\ = \ & n - \sum_{i = 1}^{k} \left\lfloor \frac{n}{2^i} \right\rfloor \end{aligned}\]

这样我们就用初等的方法刻画出了 \(\text{popcount}\)

可以发现一个正整数 \(i\) 满足条件当且仅当存在 \(0\le t \le \left\lfloor \frac{n - r} m \right\rfloor\) 使得 \(i = mt + r\)。记 \(A = \left\lfloor \frac{n - r} m \right\rfloor\),我们有答案即为

\[\begin{aligned} & \sum_{t=0}^A \text{popcount}(mt + r) \\ = \ & \sum_{t=0}^A \left( mt + r - \sum_{i = 1}^{k} \left\lfloor \frac{mt + r}{2^i} \right\rfloor \right) \\ = \ & \frac{mA(A + 1)}2 + A r -\sum_{t=0}^A \sum_{i = 1}^{k} \left\lfloor \frac{mt + r}{2^i} \right\rfloor \\ = \ & \frac{mA(A + 1)}2 + A r - \sum_{i = 1}^{k} \sum_{t=0}^A \left\lfloor \frac{mt + r}{2^i} \right\rfloor \end{aligned}\]

对于一次询问,前面的部分可以 \(O(1)\) 求得,后面的两个求和可以通过类欧几里得算法在 \(O(\log^2 n)\) 的复杂度内处理完毕。

总时间复杂度 \(O(T\log^2 n)\)

Submission.

posted @ 2022-12-25 19:26  joke3579  阅读(77)  评论(2编辑  收藏  举报