• Atcoder试题乱做 Part4


    时光怎不经一生

    浮浮沉沉已半生

    一壶浊酒欲随风

    一步一瞥似惊鸿

    情字要如何追问

    一指兰花为谁挽留


    \(\text{[ARC147D]Sets Scores}\)

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

    考虑一种令集合之间相差的数的数列为 \(x\) , 若确定一个 \(x\)\(S_1\) 则确定整个集合序列, 对于一个确定的 \(x\) , 有 \(2^m\) 个可能的 \(S_1\) .

    \(A_x\)\(S_1\) 中有 \(x\) 这个数时的集合数量, \(B_x\) 则为没有 \(x\) 的集合数量, 则数列 \(x\) 所能构造出的集合序列分数和为 \((A_1+B_1)(A_2+B_2)\cdots(A_m+B_m)=n^m\) .

    数列 \(x\) 总共有 \(m^{n-1}\) 种, 则答案为 \(n^m\times m^{n-1}\) .


    \(\text{[ARC111E]Simple Math 3}\)

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

    大概是求个这种东西 \(\sum\limits_{i=1}^{lim}{\frac{Ci+A}{D}-\frac{Bi+A-1}{D}}\) , 类欧几里得即可.


    \(\text{[ARC101D]Robots and Exits}\)

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

    不用管只有一个出口的, 把一个机器人的两个可能的出口看作 \((a,b)\) , 机器人移动左右的最远距离看成 \((x,y)\) , 每次可能变成 \((x+1,y)\) 或者 \((x,y+1)\) , 变成二维偏序问题了, 设 \(f_i\) 表示第 \(i\) 个机器人出去的方案数, \(f_i=\sum\limits_{a_j<a_i,b_j<b_i}{f_j+1}\) .

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


    \(\text{[ARC071D]Infinite Sequence}\)

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

    正着 \(dp\) 有后效性, 倒着就没了, 设 \(f_i\) 表示考虑了 \(i\sim n\) 的填法的方案数.

    注意到只有填了 \(1\) 才有拓展的空间, 如果两个连续位置都不是 \(1\) , 那只能是 \(xyyyyyy\dots\) , 转移分别是第 \(i\) 位为 \(1\) , 第 \(i\) 为不唯一但第 \(i+1\) 位为 \(1\) 和第 \(i\) 位和第 \(i+1\) 位都不为 \(1\) , 后缀和优化, 时间复杂度 \(\mathcal{O}(n)\) .


    \(\text{[ARC073D]Many Moves}\)

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

    貌似很套路, 但还是想了蛮久.

    注意到我们不需要知道到底是哪个棋子在询问位置上, 所以设 \(f_{i,j}\) 表示做完前 \(i\) 个询问, 一个棋子在 \(x_i\) , 另一个在 \(j\) 的最小值.

    \[f_{i,j}=f_{i-1,j}+|x_i-x_{i-1}|\\ f_{i,x_{i-1}}=\min\{f_{i-1,j}+|j-x_i|\} \]

    放在线段树上, 第一个操作是全局加, 另一个把绝对值拆开, 维护 \(f_{j}+j\)\(f_{j}-j\) 即可.

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


    \(\text{[AGC009D]Uninity}\)

    \(\color{red}{\text{[HARD]}}\)

    不可多得的贪心好题啊.

    最优解一定是最优的点分数的最大深度.

    考虑这棵树形成的过程, 初始点的 \(tag\) 均为 \(0\) , 每次合并时变为 \(k\) , 对于一对点, 若 \(tag_u=tag_v\) , 则 \(u\)\(v\) 的路径上一定存在一个点的 \(tag\) 大于它们.

    考虑贪心的从叶子往根选, 每个选可行的最小值即可保证正确, 记集合 \(s_x\) 为在 \(x\) 子树中已经存在且到 \(x\) 还没有比它大的集合.

    首先 \(tag_x\) 要满足两点,

    1. \(y\in son_x\) , 则 \(tag_x\not \in s_x\) .
    2. \(y_1,y_2 \in son_x\) , 则 \(tag_x > \max\{s_{y_1}\cap s_{y_2}\}\) .

    若不满足 \(1\) , 则其子树到 \(x\) 不满足; 若不满足 \(2\) , 则两个子树通过 \(x\) 连通不满足.

    此时我们已经知道了 \(tag_x\) , 可以根据子树信息推出 \(s_x\) , 时间复杂度 \(\mathcal{O}(n)\) .


    \(\text{[ARC120E]1D Party}\)

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

    注意到还是不难的, 首先不可能停下, 一定是朝一个方向见到一个人再变向, 进一步不变向继续走也是一样的.

    注意到放到坐标轴上是形成三角形, 所以要最小化高度, 不难列出一个 \(\mathcal{O}(n^2)\)\(dp\) , 设 \(f_i\) 表示以 \(i\) 结尾的最低高度.

    只有常数项有用, 所以复杂度 \(\mathcal{O}(n)\) .


    \(\text{[ARC111F]Do you like query problems?}\)

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

    受教了, 先转期望乘上方案数做题.

    \[ans=\sum_{j=1}^{q}{\frac{1}{2m+1}{E}}=\sum_{j=1}^{q}{\frac{1}{2m+1}\sum_{i=1}^{n}{\frac{i(n-i+1)}{\frac{ n(n+1)}{2}}E(a_{i,j})}}\\ =\sum_{j=1}^{q}{\frac{1}{2m+1}\sum_{i=1}^{n}{\frac{i(n-i+1)}{\frac{ n(n+1)}{2}}\sum_{k=1}^{m-1}{P(a_{i,j}\geqslant k)}}} \]

    对于一个点有效的操作概率是 \(P_i=\frac{m}{2m+1}\times \frac{i(n-i+1)}{\frac{n(n+1)}{2}}\) , 所以 \(P(a_{i,j}\geqslant k)=(1-(1-P_i)^{j-1})\frac{m-k}{m}\) .

    \[ans=\frac{m-1}{(2m+1)n(n+1)}\sum_{i=1}^{n}{i(n-i+1)\sum_{j=1}^{q}{(1-(1-P_i)^{j-1})}} \]

    后面是等比数列求和, 时间复杂度线性对数.


    \(\text{[ARC112E]Cigar Box}\)

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

    好像也不是很难, 为什么我想不出呢, orzxy.

    注意到只有最后一个操作是有用的, 同时注意到, 最终的序列一定是这样的形式, 可以分成三部分, 左边一部分放是最终操作移动到左边的数, 右边一部分是最终操作移动到右边的数, 中间是从来没有被移动过的数, 并且中间部分是单调递增的.

    这时我们可以 \(\mathcal{O}(n^2)\) 的枚举左边和右边的个数 \(L\) , \(R\) , 并且期望快速计算这种情况下移动的方案数.

    这相当于我们给 \(m\) 个元素上颜色, 颜色为 \(1\sim L+R\) , 并且每种颜色都要有, 相当于我们把 \(m\) 个球放进 \(L+R\) 个无标号的盒子中, 并令盒子的编号为盒子中的序号最大的球的序号, 并给盒子排序, 这样即可一一对应一种移动方案, 同时我们需要钦定这 \(L+R\) 个颜色哪些左移哪些右移, 并且我们只需要最后一个操作是我们钦定的方向即可, 之前的颜色相同的可以任意方向, 所以一个局面的移动方案即为

    \[\begin{Bmatrix}m\\L+R\end{Bmatrix}\binom{L+R}{L}2^{m-L-R} \]

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


    \(\text{[ARC087F]Squirrel Migration}\)

    \(\color{red}{\text{[HARD]}}\)

    这为什么想的出来啊.

    对于一条边, 它把树分成两个部分 \(s_1\)\(s_2\) , 不妨设 \(|s_1|\leqslant |s_2|\) , 那么这条边最多被经过 \(2|s_1|\) 次.

    最大值即等价于, 将重心 \(G\) 拉出来, \(\forall u\in son_G,v\in subtree_u,p_v\not \in subtree_u\) .

    所以可以容斥求答案, 设 \(f_i\) 表示钦定 \(i\) 个点不满足条件的方案数, 则答案即为 \(\sum{(-1)^if_i(n-i)!}\) , \(f_{i}=\binom{x}{i}^2i!\) , 其中 \(x\) 为该子树的大小.

    \(f\) 树上背包即可, 时间复杂度 \(\mathcal{O}(n^2)\) .


    青山常伴绿水

    燕雀已是南飞

    美人画卷残留一丝青灰叹余美

    回忆斑驳微醉

    叹相思未随

    几春几秋几段轮回

  • 相关阅读:
    java远程调用rmi入门实例
    POJ2752 Seek the Name, Seek the Fame 【KMP】
    Scala入门到精通——第十六节 泛型与注解
    js:简单的拖动效果
    Android拍照、摄像方向旋转的问题 代码具体解释
    对dispatch_async到主线程的逻辑封装成C/C++接口类型
    Oracle password expire notices
    CentOS bridge br0 kvm libvirt-xml
    国内常用ntp服务器ip地址
    C Deepin指针
  • 原文地址:https://www.cnblogs.com/Lonely923/p/16732584.html
Copyright © 2020-2023  润新知