Loading

题解-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\to 100\),然后答案是左边的上升子序列个数。

如果左边只有 \(1\),答案是 \(1\);否则每次把一个更大的数加在左边的前面,上升子序列数量 \(+1\);否则上升子序列 \(\times 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\notin (a_i,a_i+1)\) 中位数序列就必然是合法的。

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

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

aclink

posted @ 2021-01-10 18:02  George1123  阅读(125)  评论(0编辑  收藏  举报