2.18 The sea I hang upside down will be your sky ——ARC128~130

可能是太菜了,有两个 F 不在这里。后面会陆续补上这些题,但是今天的古报就先到这里了。

ARC128

ARC128D Neq Neq

最终一定是一些区间被删了。而探究一个区间能被删掉的条件:我们发现如果区间 \([l,r]\) 有三种不同的数,那么 \([l+1,r-1]\) 一定可删,否则只有 \(l=r-2\) 才行。于是直接 DP。

ARC129D -1+2-1

本以为只有我在使用代数方法。没想到这题正解就是代数方法。考虑设在 \(a_n\) 作为 \(i-1\) 的次数为 \(y\),在 \(a_1\) 作为 \(i -1\) 次数为 \(x\)\(i\) 处作为 \(i-1\) 次数为 \(f_i\),那么有 \(f_i=a_i-f_{i-2}+2f_{i-1}\),带参计算。然后最后得到两个关于 \(f_{n-1}\),与关于 \(f_n\) 的方程。由于 \(x,y\) 没有固定解,所以一定要这两个方程线性相关,且有整数解。于是可以得到 \(x=x_0+kp\)\(y=y_0+kq\),二分这个 \(k\) 即可。

ARC129

ARC128D K Different Values

考虑令 \(w=\lceil\frac{m}{k}\rceil\),那么如果 \(a_i>w\) 那么显然无解,否则看一下 \(a_i=w\) 的个数,如果超过 \(m\bmod k\)\(k\mid m\) 时取 \(k\))那么也无解。否则可以归纳证明有解。然后我们每次贪心取,如果 \(a_i=w\) 的个数等于 \(m\bmod k\) 那么一定要选 \(a_i=w\) 的,否则随便选。这样取下去也一定是有解的。

ARC129E Yet another minimization

一个非常典型的切糕模型。考虑 \(a_i=i\) 时的切糕:\(S\to A_{i,0}\to A_{i,1}\dots,\to A_{i,m}\to T\),对于 \(i,j\),有 \(A_{i,x}\)\(A_{j,x}\) 互相有 \(w_{i,j}\) 的连边,然后 \(A_{i,x}\to A_{i,x+1}\)\(c_{i,x+1}\) 的代价。然后考虑现在需要缩掉一些边。然后我们如下考虑:我们把这些边给每条链从上往下画出来,那么对于位置在 \(x\) 的边,可以挪到两个在其上边(\(\le x\))且最靠近的两个点上。于是我们的对 \(\{a_i\},\{a_j\}\) 离散化后,将一段区间的 \(x\) 的边给挪成同一条边。于是复杂度就很对了。

ARC128F Game Against Robot

考虑先变成 \(0,1\),即对于每个 \(m\),求出 \([2n-m+1,2m]\) 一共被选了多少次,即 \(m\) 个 1 \(2n-m\)\(0\) 的所有情况下选 \(m\) 的个数。由于我们是每次加两个删一个,于是我们两个分一组,考虑对总和的贡献。\((1,1)\)\(1\)\((1,0)\)\(0\)\((0,0)\)\(-1\)。但是如果我们选 \(-1\) 的时候,如果其是"创新低"的,那么就会导致我们选上一个 \(0\)。即我们选的 \(0\) 的个数等于 \(-\min\)。我们考虑反射容斥,得到 \(-\min>k\) 的情况方案数为 \(\binom{2n}{m}-\binom{2n}{2n-m-2k}=\binom{2n}{m}-\binom{2n}{m+2k}\)。于是我们要算 \(f_i=\sum_{k=\max(0,n-m)}^{n} (n-k)(\binom{2n}{m}-\binom{2n}{m+2k})\)。这个就是 trivial 的了。

ARC130

ARC130D

考虑取一个 deg>1 的点作为根,于是我们在选择完根是小于/大于周围点之后,剩下点的状态也于是固定。于是 DP:\(f_{u,i}\) 表示 \(u\) 子树,其中 \(u\) 在子树中的排名为 \(i\)\(u\) 小于儿子的方案数。\(g\) 为大于的。转移很容易。

ARC130E

考虑倒序操作,那么每次就是选择一个点,使得其操作了之后变为最小。那么这个点一定是一定要处于 \([\min,\min+1]\) 才能操作。考虑最终的局面,最小化初始值等同于最小化最终局面。那么根据前面这个性质,我们一定有最终局面的每个数处于 \([x,x+1]\),并且最晚操作越晚的越大。我们按最晚操作的时间从左到右排序,那么前缀为 \(x\),后缀为 \(x+1\)。然后我们考虑一开始假定都是 \(10^9\),然后操作,每次挑出(该操作完成后)最晚操作时间最早的最小值。如果不是同一个元素,但最小值相同,那么需要满足一个区间全部相等;如果最小值不同,那么必须满足一个元素在最小元素左侧,且值相差一,那么一开始就需要满足这个元素为 \(x\),最小元素为 \(x+1\)。得到了这些条件之后,我们就可以求出这个分界线。由于要最小化,所以分界线一定是越右侧越好,但是又因为会影响到最小值的取值,所以我们枚举分界线在最小值的左侧还是右侧即可。

posted @ 2024-03-26 08:30  LarsWerner  阅读(11)  评论(0编辑  收藏  举报