• Atcoder比赛总结


    ARC130

    周末把周日晚的东西都提前补了才过来打。

    A: 给出一个字符串,求有多少个位置对,使得分别删去两个位置的两个字符串相同。
    连续一串相同字母内的任意两个都合法。

    B: 一个 \(W \times H\) 的矩阵,每次操作将某一行或一列染色,求最终状态下每个颜色有多少个格子。
    从后往前直接做。

    C: 给出两个数 \(a\) , \(b\) ,让你将其重排列,最小化 \(a+b\) 每一位的和。
    考虑两数相加进位是有 \(-9\) 的贡献的,如果两数之和为 \(9\) ,但是后面有 \(1\) 进位,也可以有贡献。
    那么暴力枚举两个最小位,这里钦定其能进位,由于进位至多为 \(1\) ,所以可以贪心地将能进位的全部靠在最小位,此时能进位的是 \(9\)~\(18\)
    将这些放完后会有两种情况,一种是两个数都还有剩,这时只能全部求和了。
    另一种是一种用完了,那另一个数就能优先把 \(9\) 放完,此时可以去掉所有 \(9\) 的贡献。
    这样写 WA 了两发,还一直以为是细节没写对。
    后来意识到最后的两种情况可以做点文章。
    两个数都还有剩的可以并到第二种,做法是将枚举的最小位往后移,把影响答案的不可能进位数塞到前面。

    D: 给出一棵树,要求计算这样的排列数:对于树上的节点,每个和它相邻的节点的对应值要么都小于它,要么都大于它。
    一定要注意到是排列不然会打空。(同时说明了手玩数据的必要性)
    我们设 \(f_{i,j,0/1}\) 为在 \(i\) 号节点,其子树中有 \(j\) 个 小于 它,它的所有儿子都 小于/大于 它,的方案数。
    转移的时候要带上排列数的系数。

    E:
    题意:有数组长度为 \(n\) 的数组 \(\left\{a_i\right\}\) ,有 \(m\) 次操作,每次操作将 \(a_x+1\) ,保证操作前 \(a_x=\min \left\{a_i\right\}\) ,给出每次的 \(x\) ,求数组初始状态,要求字典序最小。
    注意到

    1 2 2 1
    

    这样也是可能合法的,操作次序的相对顺序并不一定。
    但是容易发现不可能有这样的情况出现:

    1 2 2 2 1
    

    于是我们对序列分组,每个组内不能有相同的数,并且后面的组需要包含前面组内的元素。
    通过维护每个位置是否可以作为组末即可轻易做到这一点。
    最后的一组是特殊的,它不必包含前面组内的元素,因为这组做完后是可以有数组不完全相同的情况出现的。
    那么我们分成最后一组是否包含 次数MAX 的数来做,这里推推就好了。
    主要是细节要注意。。。99个测试点太难搞了。

    ARC059 virtual

    可能是打得最好的一次ARC(
    切了前三题。

    C: 给出一个长度为 \(n\) 的序列,要将序列中所有数改成相同,将 \(x\) 改做 \(y\) 需要代价 \((x-y)^2\) ,问最小代价。
    由于 \(n \le 100\) , \(\vert a_i \vert \le 100\) ,暴力碾。

    D: 给出一个字符串,求其中一个子串使得长度大于 1 且有超过一半的字符相同。
    如果存在一个这样的子串,若是偶数长度,则必有一对相邻字符相同,这对字符就是一个合法串;
    若是奇数长度,则必有 \(a_i = a_{i+2}\) 存在,此时这个长度为 3 的串也是合法的。

    E: 题意不赘述。
    就是最简单的 DP 把所有情况的系数一起转移。
    数据范围小把自然数幂和预处理了就好。

    F: 每次操作可以在序列末补 0/1 或者删去最后一个字符,问 \(n\) 次操作得到字符串 \(s\) 的方案数。
    差一部分没有想到。
    容易发现 \(s\) 其实只有长度是有用的。
    每两个保留下来的数之间的方案数是卡特兰数。
    转移方程一样快速幂求就好。
    最后就差第一个保留下来的数前面。

    ARC060 virtual

    远古题质量没有保证。。。

    C 暴力DP。

    D 分成小于和大于 \(\sqrt n\) 的,式子写出来就可以直接算。

    E ST 表维护。

    F 大胆猜结论,除了最小正周期外的点一般都合法,将一些不合法的点判掉就好。

  • 相关阅读:
    JavaScript 各种遍历方式详解
    使用TortoiseGit操作分支的创建与合并
    前端实现图片压缩上传
    改变input的value值,同时在HTML中将value进行改变
    HTML中字体单位px pt em之间的转换
    解决PHP无法接收post超过1000个字段的问题
    解决微信不能扫描下载的问题
    实现类似于百度实时搜索将结果在下拉框中显示的功能
    Python导入路径含特殊字符的包
    大二秋学期记录
  • 原文地址:https://www.cnblogs.com/Kelvin2005/p/15623619.html
Copyright © 2020-2023  润新知