• 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

  • 相关阅读:
    P3478 [POI2008]STA-Station
    P2015 二叉苹果树
    P2014 选课 (树型背包模版)
    求树的每个子树的重心
    求树的直径
    Javascript--防抖与节流
    JavaScript中call和apply的区别
    解决谷歌浏览器“此Flash Player与您的地区不相容,请重新安装Flash”问题(最新版)
    matlab实验代码(总)
    表达式树
  • 原文地址:https://www.cnblogs.com/Lonely923/p/16794567.html
Copyright © 2020-2023  润新知