0%

AGC046 简要题解

A - Takahashikun, The Strider

可以发现行走的路线在以 \((1,\frac{1}{2})\) 为圆心,半径为 \(1\) 的圆上,所以当再一次面向 \(y\) 轴合法,根据简单的数论知识可知答案为 \(\dfrac{360}{\gcd(n,360)}\)

提交记录

B - Extension

有个比较简单的做法,设 \(f(i,j)\) 表示 \(c=i,d=j\) 的答案,考虑最后一行填了行还是列,这部分是 \(jf(i-1,j)+if(i,j-1)\),注意如果新形成的左上角没有涂黑,则其会在填行和填列中都被计算一遍,所以要减去没有涂到左上角的方案数 \((i-1)(j-1)f(i-1,j-1)\)

提交记录

C - Shift

显然最多操作次数不会超过 \(n\),也就是直接一步到最终位置,所以把 \(m\) 的范围降到了 \(n\)

\(0\) 看作分隔符,记 \(a_i\) 表示第 \(i\)\(0\) 前连续的 \(1\) 的个数,然后我们考虑把 \(1\) 插入到 \(0\) 里。设 \(f(i,j,k)\) 表示考虑了前 \(i\)\(0\),目前一共填了 \(j\)\(1\),用了 \(k\) 次操作,同时我们要保证操作次数最少。 转移时考虑最后一段填了多少个 \(1\),如果不多于一开始的个数,则不需要操作;反之需要花费操作次数从后面借,那么有转移: \[ f(i,j,k)=\sum\limits_{c=0}^{a_i}f(i-1,j-c,k)+\sum\limits_{c=a_i+1}^{a_i+k}f(i-1,j-c,k+a_i-c) \] 可以用前缀和优化转移,复杂度 \(O(n^3)\),但是不优化也能过。

提交记录

D - Secret Passage

我们把过程拆为删数和填数两部分,则删掉两个数以后我们可以先存着不删除,我们管这种叫“自由”的数。

\(f(i,j,k)\) 表示 \(i\) 及以后的数不变,有 \(j\) 个自由的 \(0\)\(k\) 个自由的 \(1\) 是否合法。转移要不然是删往后两位中的一位,要不然是添加一些自由的数再删掉。

然后考虑填,设 \(g(i,j,k)\) 表示 \(i\) 及以后的数不变,有 \(j\) 个自由的 \(0\)\(k\) 个自由的 \(1\) 能填出多少方案,边界条件 \(g(0,j,k)=\dbinom{j+k}{j}\),转移时为了保证不重复,如果最前一位能填原序列的数就填。

注意到有的时候 \(f(i,j,k)\) 能填出的状态可能完全包含了 \(f(i',j',k')\) 能填出的状态,所以要把 \(f(i',j',k')\) 置为 \(0\)

提交记录

E - Permutation Cover

考虑什么时候无解,可以发现,如果 \(2minA+1\leqslant maxA\) 则无解,因为单独把这两种数提出来,可以发现要不然在中见连续出现了三个 \(maxA\),要不然在两端连续出现了两个 \(maxA\)

同时可以证明,如果 \(2minA+1<maxA\) 则一定有解,考虑每一次把最小的拿出来,然后每一个空都可以插入两个相同的更多的数。

然后我们考虑计算固定某个前缀,且这个前缀的末尾是一个排列的序列是否存在,这时比较特殊的是如果 \(2minA+1=maxA\),也可能有解,且有解当且仅当在最后的排列中,所有出现 \(maxA\) 次的元素都在出现 \(minA\) 次的元素之前,证明就是这一次左面可以连续两个出现 \(maxA\) 次的元素。

所以我们每次枚举新添加的一串的长度然后取字典序最大的,假设固定长度我们可以贪心解决。

提交记录

F - Forbidden Tournament

关于这类图的性质可以看这里,这篇题解就不分析了。

首先枚举不在拓扑序最后一个强连通分量的点数,然后我们只需要对强连通图计数。

我们强制令 \(x=1\)\(x\) 不一定是入度最大的点了 ),剩下点的标号只需要乘上一个 \((n-1)!\) 即可解决。

枚举 \(p=|P|,q=|Q|\),现在等价于给定一个 \(p\times q\) 的表格 \(a\),然后若 \(a_{i,j}=1\)\(P_i\)\(Q_j\) 连边,则需要满足以下要求:

  • \(a_{i,j}=1\),则对 \(c<i\)\(a_{c,j}=1\)
  • \(a_{i,j}=1\),则对 \(d>j\)\(a_{i,d}=1\)
  • \(a_{1,1}=1\)
  • \(a_{i,k+i-p+1}\not=0\)
  • \(a_{k+j-q+1,j}\not=1\)
  • \(a_{p,1}=0\)

这个可以通过每次添加一列的 dp 完成,用前缀和优化可以做到 \(O(pq)\),故总复杂度 \(O(n^4)\)

提交记录