Neowise Labs Contest 1 (Codeforces Round 1018, Div. 1 + Div. 2)解题报告

Neowise Labs Contest 1 (Codeforces Round 1018, Div. 1 + Div. 2)

A

Kill time : 2 min。

倒着填,< 就填当前剩下的最小值,否则最大值。

B

Kill time : 3 min。

一个颜色如果不配对,顶多拿出 \(\max(l_i, r_i)\) 个。配对拿 \(l_i + r_i\) 个。

刚好有 \(k\) 种颜色配对,选 \(k - 1\)\(l_i + r_i\),再选一个 \(\max(l_i, r_i) + 1\)

使上面的总和最大,枚举最后 \(\max(l_i, r_i) + 1\)\(i\),剩余的 \(l_i + r_i\) 选最大。

C

Kill time : 4 min。

行与列之间互不影响,可以分开做。

直接 DP 每一行要不要加一就行,转移时看看限制。

D

Kill time : 11 min。

还是有点慢 qwq。

变换坐标 \(y \leftarrow x+y\),每次操作就是一个小正方形集体反转了。

这种题肯定是找不变量。

发现变换坐标后,亮着的灯泡中每个 x 坐标出现次数的奇偶性都不会变。y 也一样。

这样把所有坐标异或起来就是原来的坐标,再变换回去就行。

E

Kill time : 20 min。

太慢了 qwq。

发现每次尽量把逆序对减少 2 一定最优了。剩余一些奇数段需要合并,这些每次只能使逆序对减一。

使逆序对减一的操作需要做几次?发现如果有一段 0000... 是偶数段,就不用管,0110... 这种也不用,这两个零可以自然合并。

也就是说我们可以依次删去所有相邻的同数字段,剩下的是:

010101... 或者 10101...

这些每操作一次又可以删去 4 个数,所以只需要 \(t = \lfloor \dfrac l4 \rfloor\) 次。全局剩下一个单个的 0/1 是没问题的。

记总逆序对数为 \(I\),答案就是 \(\dfrac{I - t}{2} + t\)

F

Kill time : inf

数据结构没做出来,伤心了...

考虑双指针,算每个左端点对应的最大右端点。

每次试图加入一个命题,看能不能合法。

不合法:

  1. 加入一个 1 操作的线段,但它的覆盖范围里每个位置都已经有 0 操作的线段覆盖过了。
  2. 加入一个 0 操作的线段,它所连接其它 0 操作线段形成的完全覆盖区间包含了某个 1 操作的线段。

对于 1 情况,我们仿照矩形面积并的做法,线段树支持区间 +1,区间 -1,区间返回最小值,询问时判断是否区间最小值为 0 即可。

2 情况的“它所连接其它 0 操作线段形成的完全覆盖区间包含了某个 1 操作的线段”是充要条件,这是因为加入一个 0 操作的线段后刚好不合法,说明就是它导致的。可以在线段树上二分找到包含它的极大全覆盖段,然后二维数点看看有无被包含的 1 操作的线段。

G

先考虑 \(n = 3^m\)

考虑没有忽略时,按信息熵分析一定要至少 \(m\) 次询问(以 3 为底时每次熵只能减少 1),3 均分即可。可以按三进制拆位。

有忽略时同理一定要至少 \(m + 1\) 次询问。多出来那次怎么分配呢?按交叉熵分析一定需要这次问出的信息与其余询问完全独立。这可能吗?就如同 \(n\) 维空间里,可以有 \(n+1\) 个向量两两垂直吗?

慢着,这不是对应垂直的概念,而是对应线性无关。我们知道,一组基的向量,把其中一个替换成基中向量的和,仍然是基。

于是设定最后一组询问为前面的模 3 向量和即可。

有点抽象,可以看题解的第二种理解,差不多。

\(n\) 不是 3 的幂,就取到 3 的幂,最后问的时候因为是 3 - 划分,必有两组数量奇偶性相同,问这两组即可。

H

神仙题,不会,看题解 qaq

posted @ 2025-05-03 15:26  Vizing  阅读(67)  评论(0)    收藏  举报