Refact.ai Match 1 (Codeforces Round 985, Div. 1 + Div. 2)

Contest Link

A

Easy math problem.

Submission

B

大胆贪心猜结论,容易想到一个套路化的 stack 做法。

Submission

C

容易想到是个二分题,二分答案 \(k\) 表示答案能否 \(\geq k\)

统计一下前缀最大然后 \(O(n)\) 的写一个 check 就可以了。

Submission

D

构造题,好题但是思路比较套路。

考虑这种构造题我们一般会怎么写,当然是往题目要求的方向去考虑:空图或者树。

  • 空图显然局限性比较大,与之相应的限制也更多,手玩一下不难发现还会出现无法构造的情况。
  • 那就尝试构造树,又有不同的两个思路了:
    • 考虑删减边的数量,因为我们知道树最多也只有 \(n - 1\) 条边,不需要太多
    • 考虑构造特殊树

\(2.2\) 的思路去考虑比较符合直觉,因为特殊情形比较好构造。

分三步走:

  1. 找到所有度数不小于 \(2\) 的点将其和另外两个相邻的点进行操作(边的数量会刚好 \(-1\)),知道整张图只剩下散点(\(\circ\))和散块(\(\circ \longleftrightarrow \circ\)
  2. 若散块个数 \(\gt 1\),从中任选两个,再从两个散块中任选三个点操作,这样我们就 merge 了两个散块
  3. 如果有剩余的散块,选择散块的两个顶点和树根,进行 merge
  4. 对于散点,选择树根、与树根相邻一点、散点进行 merge,直到没有散点

多画图。

操作数 \(S \leq m - 1 + n - 1 = m + n - 2 \leq 2 \times \max(n, m)\)

Submission

E

挺有意思的,思路比较好想。

\(2\) 为 base 可以生成所有合数,如果是偶数就一直 \(+ 2\),否则减去其最小的质因子(先预处理好),就能将其变为偶数。而素数显然只能由本身来生成。

所以若 \(cnt_{i \in \mathbb{P}} \geq 2\),报告无解。

若只剩下一个质数 \(p\),对其翻倍就能得到一个质因子 \(2\),若偶数 \(\lt 2p\) 就无解,或者奇数(合数)减去其最小质因子 \(\lt 2p\) 也无解。

Submission

posted @ 2024-11-10 11:37  revkiru  阅读(113)  评论(0编辑  收藏  举报