AtCoder Regular Contest 128

A - Gold and Silver

题意:一开始,手头上只有一个黄金,有n天,每天一个黄金可以交换\(a_i\)个白银,并且\(a_i\)个白银也可以交换1个黄金,问每一天最多可以得到多少黄金,(每天如果换的话,就要全部换掉)

sol.发现,一定是 开始选一个大的,再选一个小的这样

B - Balls of Three Colors

题意:\(给你R,G,B(R ,G,B<= 1e8)\),数量的三种颜色不同的小球,问你所需执行的最小次数操作(操作类似于 用一个红球,一个蓝球,换2两个绿球)

sol.

\[得按R,G,B奇偶来考虑吧\\ 不妨另R <= G <= B\\ 1.R + G + B \%3!=0 无解\\ 2. 分别讨论一个 全选红,绿,蓝的情况即可 \]

C - Max Dot

题意:给你\(n,m,S\),以及一个序列\(\{a_i\}\),构造一个序列\(\{x_i\}\),使得

\[0<= x_1<=x_2<=...<= x_n <= M\\ \sum_{i = 1}^nx_i = S\\ 最大化 \sum_{i = 1} ^ n x_i * a_i \]

显然的在一个位置\(i\)选了\(x_i\),实际上 需要M留出\((n - i + 1) * x_i\)的这么多位置,并且,价值是\((n - i + 1) * x_i * (sum[n] - sum[i - 1])\) , 每次只要取最大化的 \(\frac{sum[n] - sum[i - 1]}{n - i + 1}\)的就好了

但有M的限制,所以需要一段一段的去做

D - Neq Neq

题意:有n个球,第i个球上有一个数字\(a_i\),你每次操作可以 选择三个相邻的球\(x,y,z\),且\(a_x != a_y , a_y != a_z\),问执行若干次操作后,剩下球的可能方案数 $ (n <= 2e5)$

sol.一个dp吧

\(f[i] = \sum_j f[j] * [j + 1--i - 1段可以消掉]\)

比赛时想到这里就没更多进展了。

而官方题解给出了证明,即在我们处理后的序列中,显然\(dp_i\)能由 \(dp_{i-1}\),\(dpi_2\)转移而来。而对于一个长度 \(≥4\) 的子段,当且仅当它含有元素种类至少为$ 3$ 时,才能把这个子段删得只剩下两端的数。在我们的 dp 方程中,两端就分别是 \(i,j\)

到这里就可以写代码了,但这道题最难的地方就是这个证明和猜到或者推出这个结论。

posted @ 2021-10-29 09:52  After_rain  阅读(61)  评论(0)    收藏  举报