24.2.13 ~ 4.13 Codeforces Round 925 & 926 & 934 & 939 (Div.3 / Div.2 * 3)

925 Div.3

Solve : A~G (7/7)

Rank : 95

Rating : \(0+706=706\)\(1400+206=1606\)

Perf : 2224 | 2089

发挥评价:Normal+

本场没什么有价值题目。

926 Div.2

Solve : A~D F (5/6)

Rank : 72

Rating : \(706+575=1281\)\(1606+225=1831\)

Perf : 2506 | 2361

发挥评价:Good

本场没有什么失误。

CF1929E

*2300 (me *2300)

选中最少边使得给定的所有 \(k\) 条路径都有边被选中,\(k\le 20\)

发现效果本质不同的边只有 \(O(k)\) 种,去重后状压 DP 即可。

934 Div.2

Solve : A~D (4/6)

Rank : 123

Rating : \(1281+345=1626\)\(1831+95=1926\)

Perf : 2211 | 2173

发挥评价:Normal-

失误:会了 D 后先看了会 E/F,导致 D 过得很晚,事实上 E/F 有难度。

以后打 CF 会了就写,不要搁置。

CF1943C

*2300(me *2100)

给定一棵树,初始每个节点为白色,每次可以任选一节点 \(x\) 和距离 \(d\)(可以为 \(0\)),将所有与 \(x\) 距离为 \(d\) 的点染黑,求最小的把所有点染黑的操作次数。

怎么当初这么简单的题都不会。

容易想到一个策略就是选择直径中点一层一层染色,看起来挺对的。

如果想不到也没关系。

考虑一条链上一次最多只能染色两个点则假设直径上点数为 \(d\),总次数有下界 \(\left \lceil \frac{d}{2} \right \rceil\)

而根据上文操作方法,这也大概是上界。

首先 \(d\),为奇数太简单,直接选取直径严格中点即可。

否则需要选取两个中点都操作,其中 \(d\)\(4\) 倍数时候可以直接搞定。

\(d\) 不是 \(4\) 的倍数时,最后必然剩下两个需要两次才能搞定。

CF1943D(1/2)

定义一个长为 \(n\) 的数列是好的,当且仅当可以通过多次长不为 \(1\) 的区间减 \(1\) 删除到全 \(0\)

求长为 \(n\),每一项在 \([0,k]\) 之间的好序列的个数。

\(k \le n,n\le 400,3000\)

Solution:

好题目。

请先观察性质。

将区间减改为单点在差分数组上修改,则原问题等价于 \(\Sigma_{j=1}^{i-2}b_j\geq -b_i\),然后就又等价于 \(a_{i}\le a_{i-1}+a_{i+1}\)

这手迂回是很帅的,然后直接 DP,至少要记录上两位,即便前缀和优化复杂度仍然是 \(O(n^3)\) 的,可以通过 D1。

现在这个 DP 并没有抓住另一个性质:不合法位置不相邻。

于是我们记录 \(g_{i,j}\) 表示正好在第 \(i\) 位出现不合法的情况,发现 \(g_{i,j}\) 只与 \(f_{i-2}\) 部分有关,而中间一位能填的数量正好形成一个阶梯形,二位前缀和优化即可。

这个性质利用相当好啊。

939 Div.2

Solve : ABD (3/6)

Rank : 1134

Rating : \(1626+118=1744\)\(1926-32=1894\)

Perf : 1798 | 1798

发挥评价:Bad

失误:C 似了。

CF1956E(1/2)

题意太长,略。

Solution:请先观察形态。

发现 \(a_i=0\) 时候等价于 \(i\) 去世了,去世之后没有任何影响。

于是经过较少轮后,存活的部分变成很多条链。

具体地:\(O(\sqrt{V})\) 轮后,链长全不超过 \(2\)\(O(^3\sqrt{V})\) 轮后,链长全不超过 \(3\)

而两者都可以 \(O(1)\) 解决,故模拟即可。

posted @ 2024-05-26 13:25  Fun_Strawberry  阅读(70)  评论(0)    收藏  举报