Atcoder试题乱做 Part5

名言, 解决不了题目, 那就解决你自己. /ybyb


\(\text{[ARC136E]Non-coprime DAG}\)

\(\color{blue}{\text{[NORMAL]}}\)

考虑 \(i\) 什么时候能到达 \(j\) , 令 \(f_x\)\(x\) 的最小质因数.

  • \(i\) 是偶数, \(j\) 是偶数, 一定可以到.
  • \(i\) 是偶数, \(j\) 是奇数, 当 \(i \leqslant j-f_j\) 时可以到.
  • \(i\) 是奇数, \(j\) 是偶数, 当 \(i+f_i\leqslant j\) 时可以到.
  • \(i\) 是奇数, \(j\) 是奇数, 当 \(i+f_i\leqslant j-f_j\) 时可以到.

所以一个数相当于一个线段, 差分即可, 时间复杂度 \(\mathcal{O}(n)\) .


\(\text{[AGC028F]Reachable Cells}\)

\(\color{blue}{\text{[NORMAL]}}\)

我们发现, 做完 \((x,y)\) 的答案后, 如果它上面左边都是墙, 那它就不会对其他格子造成影响了, 可以把它也设置成墙, 也可以递归改其他格子.

一个格子能到的格子是一个不规则图形, 每一行都是一个区间, 前缀和算一算即可.

时间复杂度 \(\mathcal{O}(n^3)\) .


\(\text{[AGC029F]Construction of a tree}\)

\(\color{green}{\text{[EASY]}}\)

考虑一棵树, 我们可以给每条边定向, 使其变成一棵外向树, 那么入度为 \(0\) 的即是根, 那么一条边的作用即为使一个点的入度加 \(1\) , 也就是说, 我们有 \(n-1\) 个集合, 每次从一个集合里选一个点, 使其入度加 \(1\) , 需要最终只有一个点入度为 \(0\) , 这就是一个二分图匹配.

这是充分条件, 但并不必要, 所以我们还需要构造出解.

找到入度为 \(0\) 的点, 然后找到没有访问过的相邻集合的匹配点, 作为一组边, 再将这个点作为新的入度为 \(0\) 的点, 重复做即可.

特别的在找不到合法的点时无解, 时间复杂度 \(\mathcal{O}(n\sqrt{n})\) .


\(\text{[ARC150B]Make Divisible}\)

\(\color{green}{\text{[EASY]}}\)

既然这场打崩了, 那就平复心态, 好好记录错误吧. 但我还是想说, md, 这玩意都能打崩.

首先没有发现这题可以根号分治, \(k(a+x)=b+y\) , 不难发现 \(x+y \leqslant 10^9\) , 所以, 当 \(a\geqslant 10^5\) 时, \(k\leqslant 10^5\) , 枚举 \(k\) , 解出最小的 \(x+y\) 即可, \(ak-b\) 固定, 最小个合法的 \(x\) 即为 \(\frac{|ak-b|+k-1}{k}\) .

\(a\leqslant 10^5\) 时, 不妨令 \(y=\lfloor\frac{b+a-1}{a}\rfloor a-b\) , 所以枚举 \(x\) 或者 \(y\) 即可.


\(\text{[ARC150C]Path and Subsequence}\)

\(\color{green}{\text{[EASY]}}\)

唉, 我不好说, 姑且认为是百度翻译坑了我, 导致我得到了一个错误题意.

\(bfs\) 求出 \(f_i\) 表示从结点 \(1\) 到结点 \(i\) 按照能匹配就匹配的方式最少匹配到 \(b\) 的哪个下标.

然后, 然后, 然后就做完了, 大无语, 我看成了 \(b\)\(1\sim n\) 的子序列. /ll


\(\text{[ARC150D]Removing Gacha}\)

\(\color{green}{\text{[EASY]}}\)

还是不会期望套路啊.

首先原问题的期望, 与好点也可以选, 但选到好点不算次数, 这两个问题的期望相同, 然后拆开对于每个点分别考虑.

\(\mathbb{E}(x)\) 为点 \(x\) 被选的期望次数, \(p_k\) 为点 \(x\) 在第 \(k\) 次操作被选到并且这次选到时点 \(x\) 还是坏点的概率, 那么 \(\mathbb{E}(x)=\sum\limits_{k\geqslant 1}{p_k}\) , 设 \(x\) 的深度为 \(d\) , 考虑容斥计算 \(p_k\) .

\[p_k=\frac{1}{n}\sum_{i\geqslant 1}{\binom{d}{i}(-1)^{i-1}\left(\frac{n-i}{n}\right)^{k-1}}\\ \mathbb{E}(x) = \sum_{k\geqslant 1}{p_k}=\sum_{i\geqslant 1}{\binom{d}{i}(-1)^{i-1}\frac{1}{i}}=H_d \]

其中 \(H_d\) 为调和级数, 证明可以做差或者积分.

时间复杂度 \(\mathcal{O}(n)\) .


\(\text{[ARC150E]Weathercock}\)

\(\color{blue}{\text{[NORMAL]}}\)

很妙啊, 但可能多多观察是能想的, 看到 \(10^{100}\) 实际上应该是明示要么是常数次后变化有规律, 要么是常数次后可以搞出一个很简单的规律.

只讨论 \(R\) 的个数多余 \(L\) 的情况, 对于 \(L\) 更多的情况可以通过翻转并翻转来转化.

先考虑 \(t=0.5\) 时的变化, 令 \(f_i=(s_0,\dots,s_i\text{中 R 的个数})-(s_0,\dots,s_i\text{中 L 的个数})\) .

这个时候会换方向的条件是, 当 \(s_i=L\) 并且 \(f_i\geqslant 0\) , 或者 \(s_i=R\) 并且 \(f_{NK-1}-f_i<0\) , 特别的, 当 \(f_{NK-1}-\min\{f_i,f_{i-1}\} \leqslant 0\) 时, 无论 \(s_i\) 是什么都会改变方向.

也就是化成折线图后, 在 \(y=f_{NK-1}\) 这条线之上的都会向下翻转, 同时有一些 \(s_i=L\) 并且 \(f_i\geqslant 0\) 的也会翻转, 图片参考官方题解的图.

不难发现此次操作之后 \(f_{NK-1}\) 会变成最大值, 此时我们再看 \(t>1\) 的情况.

这时候所有 \(s_i=R\) 的都不会再换方向了, 因为 \(f_{NK-1}\) 已经变成最大值了, 所以我们只用考虑 \(t>1\) 时, \(s_i=L\) 的情况.

\(k\) 为最小的满足 \(f_i>0\)\(i\) , 首先对于所有的 \(i<k\) , 都有 \(f_i\leqslant 0\) , 它们的方向不可能再变了, 这时候只用考虑 \(k\leqslant i\) 并且, \(s_i=L\) 的方向改变.

首先我们知道 \(s_k=R\) , 假设有 \(n\) 个人朝左, 并且在 \(k\) 右边, 那么一次时间后至多有 \(n-1\) 个人, 简单证明一下, 令 \(m\) 为满足 \(f_m=f_{m-1}-1\) 最小的 \(i\) , 我们有 \(f_{m-1}\geqslant f_k=1\) , 所以 \(f_m\geqslant 0\) , 因此至少有一个人会改变方向.

总结一下就是在 \(t=0\) 时对于 \(k\leqslant i\) 并且有 \(f_{NK-1}<f_i\) , \(s_i=R\) , 的人的改变方式为 \(R\rightarrow L \rightarrow R\) , 对于 \(k\leqslant i\) 并且有 \(s_i=L\) 的人改变方式为 \(L\rightarrow R\) , 其他人不会改变.

所以我们只需要找到 \(k\) , 并且计算改变次数即可, 因为有 \(f_i=\lfloor\frac{i}{N}\rfloor f_{N-1}+f_{i\bmod{N}}\) , 所以时间复杂度可以做到 \(\mathcal{O}(n)\) .


\(\text{[ARC106E]Medals}\)

\(\color{green}{\text{[EASY]}}\)

首先二分变成可行性问题, 发现每天会和一个人的某个奖章一一对应, 也就是二分图有完美匹配, 关注到 \(n\) 的范围, 考虑 \(Hall\) 定理, 发现剩下的问题是个高维后缀和.

时间复杂度 \(\mathcal{O}(2^nn\log{n}k)\) .


\(\text{[AGC027D]Modulo Matrix}\)

\(\color{green}{\text{[EASY]}}\)

还是没那么难得, 不难想到, 如果限定了一条对角线的格子, 实际上全部格子就确定了, 进一步的会想所有同主对角线方向的线上全放上不同的质数.

但这并不优, 发现这个做法本质上是让在某个对角线上的格子不同, 且其相邻的格子可以容易计算出最优解, 只是用的质数太多了, 导致数超过了 \(10^{15}\) 的范围, 考虑优化, 发现我们可以把所有主对角线上和副对角线的每条分别给一个质数, 两线相交的格子为两线的质数积, 其余格子为四周格子的 \(lcm+1\) , 容易证明不会重复, 对对角线的质数排列稍作调整即可使范围不超过 \(10^{15}\) .

时间复杂度 \(\mathcal{O}(n^2)\) .


\(\text{[AGC027F]Grafting}\)

\(\color{blue}{\text{[NORMAL]}}\)

如果两棵树一样直接输出 \(0\) .

否则枚举第一个移动的叶子并枚举其接到哪里, 因为移动之后其就无法再移动了, 故可直接将其当作根.

两棵树均以一点为根之后, 我们能发现很多性质, 树根不能动, 只能操作叶子, 所以如果不去操作一个点, 那么 \(x\) 的双亲不会改变.

换句话说, 一个点被操作当且仅当其双亲结点不同, 不可能发生的事是, 一个点不被操作, 但它的双亲结点要被操作, 这是判断无解的依据.

更进一步, 我们发现, 一个点 \(x\) 一定比其在新的 \(A\) 树中的父亲结点先被操作, 比其在 \(B\) 树种的父亲结点晚被操作.

我们按先后关系连边, 如果可以成功拓扑排序, 则有解, 且拓扑序即为一个合法的构造方案.

时间复杂度 \(\mathcal{O}(Tn^3)\) .


什么时候能有泽少和晔宝的百分之一强啊. /kel

posted @ 2022-10-30 23:47  Lonely923  阅读(282)  评论(0编辑  收藏  举报