Codeforces Round 1008 (Div. 2)

记录一下这场比较抽象的 CF 吧。

A

略过。

B

略过,手摸一下即可。

C

把我创了 1h。

考虑先将已知的东西按从小到大排序:\(b_1 < b_2 < b_3 < \cdots < b_2n\)

你尝试把 \(b_2n\) 作为 \(a_1\)。现在需要将 \(b_{[1, 2n - 1]}\) 分成两组分别含有 \(n - 1\)\(n\) 个数的集合。设两个集合中的数之和分别为 \(S_1, S_2\),缺失的数为 \(x\),我们需要满足 \(b_{2n} = x + S_1 - S_2\)

为了让 \(x\) 不与已知数重复,钦定最终 \(x > b_{2n}\) 即可,即:\(S_1 - S_2 < 0 \to S_1 < S_2\)。构造显然了。

D

场上不会做,tornado 牛逼!

首先上分讨(假设当前这一步操作后多出来的未选择道路的个数为 \(s\)):

  • 考虑如果两个操作都是 x,我们肯定选系数更大的。

  • 如果都为 +,放哪里无所谓(多出来的数量和 \(s\) 无关)。

  • 否则,我们肯定是把所有 \(s\)x 上放。因为 + 无论放多少,增加的值都是固定的。

每一位决策的时候找到后面第一个能分出优劣的位置判断即可。

我写的是 \(O(Tn^2)\),精细实现可以达到 \(O(Tn)\)

E

简单题,场上秒了。

首先他给了你两次交互机会,所以显然第一次问 \(A = \sum_{i = 0}^{28} [2 \mid i] 2^i\),第二次问 \(B = \sum_{i = 1}^{29} [2 \nmid i] 2^i\)

然后你将得到的答案 \(a, b\) 分别减去 \(2A, 2B\) 就能得到 \(x, y\) 奇数 / 偶数位的值了。

posted @ 2025-03-11 16:01  Ray_Wu  阅读(74)  评论(0)    收藏  举报