「 solution set」 AGC037

Posted cc0000

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了「 solution set」 AGC037相关的知识,希望对你有一定的参考价值。

A 一看是橙色的,跳了。

B RGB Balls

一个显而易见的贪心是考虑加进来一个颜色,如果能正好和剩下的组成一组,那么就一定让他们组成一组。留着的话前面剩下的能造成的极差一定更大。而如果组不成一个,也尽可能让他当第二个。实在加不进去了再让他当第一个。

这样我们实时维护一下 R,G,B,RB,RG,GB 的数量即可。然后因为每形成一个这样的二元组或三元组,都是在少一个元里面的挑一个。而且所有新加进来的这种颜色都是要优先组成更大的,所以无论和同类型的哪种匹配都是一样优的。每形成一种这样的多元组,就要乘上他的可能性。

C Numbers on a Circle

我们考虑从后往前逆着推,考虑一个点能通过不断地减两边得到终止状态。我们考虑最大值,最大值如果比他两边的和还要小,说明这个数动不了了,就说明无解。否则就可以一直减,反正中间有别的操作肯定不影响左右两边的值。所以直接减到不能减或者终止状态为止。如果减完了发现到不了终止状态,但是最后比中止状态小了,就说明无解了,否则就这么干就行((

然后复杂度我不会分析。感觉像 gcd?

D Sorting a Grid

感觉像网络流。打了一下发现果然是网络流,于是我们就这么写了。

考虑是要 C 每一列都是 \\(n\\) 的排列,然后对 C 的每一列排序就行。

所以我们考虑怎么求 C。对每一行建一个点,每种颜色建一个点(颜色就是排序后点该在的行),然后连边,跑出来一个完美匹配就是一列的方案,跑 \\(m\\) 次,每次删掉选了的边,就是 \\(m\\) 列的方案。

然后考虑为什么这么做就对。

首先前置知识:

Hall 定理: 对于一个二分图,其存在完美匹配的充要条件就是两侧点集大小相同,并且从一侧选出一个非空子集 \\(S\\),从 \\(S\\) 连出的边形成另一侧的点集大小大于等于 \\(|S|\\)

证明:

咕咕咕

然后我们考虑取了 \\(k\\) 次,考虑现在能否取出一个完美匹配。已知每行现在向每种颜色连了 \\(m-k\\) 条边。每种颜色向每行也连了 \\(m-k\\) 条边。

考虑反证法。假设现在取出行的一个子集 \\(S\\),它连向的子集是 \\(|T|\\),假设 \\(|S|> |T|\\),那么 \\(S\\)\\(T\\) 连了 \\(|S|(m-k)\\) 条边,而已知 \\(T\\) 总共只连出了 \\(|T|(m-k)\\) 条边,所以矛盾。

所以我们这么做每次都能取出一个合法完美匹配。

E Reversing and Concatenating

还好吧这题。

就是考虑最优的是让最小的字母在开头最长。

如果是最后一个字母最小,那么直接反复翻篇,长度就是 \\(\\min\\l_n 2^K,n\\\\)\\(l_n\\) 表示以某个位置结尾的连续最小字符长度。

否则就是需要先用一次操作使他到最后,然后也是反复翻,长度就是 \\(\\min\\l_i 2^K-1,n\\\\)

最小字符的长度是那么长,而如果是剩下的,直接在选的位置找个最小的前缀就行了。

F Counting of Subarrays

假如说一个序列全是一种字符,那么直接判断 \\(n\\geq L\\) 就行。

考虑如何判断一个序列是合法的。

我们找到一个最小的数字,把他的连续段都找出来。如果一个连续短小于 \\(L\\),那它第二个值不可能达到 \\(L\\) 了,那么一定无解。否则我们把所有连续段,假如说当前最小值为 \\(c\\),长度为 \\(k\\) ,合并为 \\(\\lfloor\\frac k L\\rfloor\\)\\(c+1\\)。因为把 \\(L\\)\\(c\\) 合并起来得到 \\((c+1,L)\\),等价于一个单独的 \\(c+1\\)

这样如果最后就剩一个数了,那么就说明可以。

然后考虑怎么统计所有子段。我们考虑维护每一个位置,是由多少个前面的位置合并到这里,并以这里结尾,设为 \\(l_i\\),同理设一个 \\(r_i\\) 。还像之前那样合并。然后统计贡献即可。但是这样会重复计算合并之后的答案,所以合并之后要减掉。

然后再合并一下 \\(l,r\\) 就行了。

复杂度,每次至少少了 \\(L-1\\) 个数字,如果用 set 维护一下连续段就是 \\(O(n\\log n)\\) 的。

以上是关于「 solution set」 AGC037的主要内容,如果未能解决你的问题,请参考以下文章

AtCoder AGC037E Reversing and Concatenating

AGC037 C Numbers on a Circle思维

Solution Set

@atcoder - AGC038E@ Gachapon

@atcoder - AGC018F@ Two Trees

@atcoder - AGC002E@ Candy Piles