题解-AGC012

AGC012


AGC012B Splatter Painting

luogu

这题是被指导的,设 (f(u)) 表示最大的 (d) 使所有距离 (u) (d) 以内的节点都被染色了。

然后每次 bfs,如果到一个点它被覆盖的新 (d>f(u)) 就继续遍历它的相邻节点。

这样的时间复杂度是 (Theta(ND))

aclink


AGC012C Tautonym Puzzle

luogu

容易走进陷阱:用每段连续的数构成 (2^k-1) 然后拼成答案,这样可能是不行的?

正解:右边放 (1 o 100),然后答案是左边的上升子序列个数。

如果左边只有 (1),答案是 (1);否则每次把一个更大的数加在左边的前面,上升子序列数量 (+1);否则上升子序列 ( imes 2)

然后对答案二进制拆分用个列表(题解中好像不用列表)维护一下即可。

aclink


AGC012D Colorful Balls

luogu

首先可以如果可以交换的间连一条边,那么每个联通块可以换成任意排列。

所以目的就是划出每个联通块,然后排列组合一下就好了。

先利用相同颜色和 (x):找到每个颜色中最小的,然后别的看看能不能和它合上即可。

如果某个颜色的一个球没有和最小的合上,用 (y)

  • 如果它的颜色的最小的就是全局最小的,看看它能不能和次小的颜色合上。

  • 否则,看看它能不能和全局最小的合上。

然后再看看每个颜色的最小的可以不可以和全局最小的合上即可。

aclink


AGC012E Camel and Oases

luogu

看成一个分成图,每层图的每个联通块是一段,每层图选一个联通块,使得每个点都被走过。

很明显这个分成图的层数是 (Theta(log v)) 级别的。

尝试 dp,因为题目多次规定第一层选的联通块,所以想到预处理前后缀。

假如是前缀,有两个关键信息:用了的层和选了的前缀长度。

可以以前者为 dp 状态,经过预处理后容易 dp 出后者。

然后可以发现第一层的联通块数如果超过 (Theta(log v)) 个是无解的。

所以可以枚举第一层的联通块和左边前缀用了的层数,容易得到答案。

时间复杂度 (Theta((n+v)log v))

aclink


AGC012F Prefix Median

luogu

(a_i=i),考虑能当第 (i) 个中位数的有那些数:([i,2n-2-i])

满足这个条件的同时,还需要满足 (forall j<i,j otin (a_i,a_i+1)) 中位数序列就必然是合法的。

所以如果从后往前选数,每次选数 (a_i) 前面就不能选 ((a_i,a_i+1)) 的数了。

所以设 (f(i,l,r)) 表示从后往前选到第 (i) 个数,比当前数小的有 (l) 个可选,比当前数大的有 (r) 个可选的方案数,dp 即可。

aclink

原文地址:https://www.cnblogs.com/George1123/p/14259005.html