• Codeforces Global Round 17 简要题解


    比赛质量比较不错。题不是非常难但也不很容易想出做法。

    A. Anti Light's Cell Guessing

    注意判断 \(1 \times 1\) 的情况。

    B. Kalindrome Array

    一种数一定是删完最优,且只会删两端第一次不匹配的两种数(否则一定不合法),暴力判断即可。

    C. Keshi Is Throwing a Party

    发现二分长度之后可以直接贪心选择是否加入。

    D. Not Quite Lee

    用 Bezout 定理,直接考虑 GCD \(2\) 的次幂即可(其他质因子一定满足)。

    E. AmShZ and G.O.A.T.

    比赛结束刚想出来。

    发现不合法的只需要用 \(3\) 个数就能判定了(证明:写出合法需要满足的不等式限制,考虑枚举中间数 \(a_m\),则第一个一定选 \(a_1\),第三个一定选 \(a_{m+1}\),那么如果这一步合法,下一步选择 \(a_2, a_{m+2}\) 一定合法)

    枚举剩余序列的第一个数 \(a_i\),因为只考虑相对大小,将它置为 \(0\),则后面非 \(0\) 的数只有最多 \(\log V\) 个,那么直接贪心即可。

    F. Mashtali: a Space Oddysey

    我们构造使得每个邻边权值和为奇数的点都合法。这种问题可以考虑通过定向欧拉回路解决(因为欧拉回路保证出入度相等)。

    如果只有 \(1\) 权边,那么可以直接用树上翻转路径/欧拉回路解决。

    因为 \(2\) 权边不影响奇偶性,我们将每个点拆成 \(1\) 点和 \(2\) 点。

    新建一个源点 \(s\)

    如果 \(1/2\) 点度数为 \(1\),将其与 \(s\) 相连。如果度数都为 \(1\),则将两者直接相连(这样保证差最大为 \(1\))。这样一定可以满足条件。

    注意判断图不连通。

    G. AmShZ Wins a Bet

    注意到我们删去的是一个合法括号串。考虑一对匹配的括号,形如 (s) 的形式,我们证明存在一组最优方案使 s 全部为空:

    • 如果 \(s\) 只含 (,那么可以改变匹配的括号使 s 为空;
    • 如果 \(s\)),那么我们不匹配这对括号答案字典序变小。

    因此对于每个字符有两种决策:匹配一对极小的括号对并将中间的字符全部删去(需要能匹配上)、不匹配。

    注意这相当于在 NFA 上走,所以贪心很难解决。

    考虑直接 DP 一个后缀的最小答案。注意每步转移只加一个字符,因此可以直接维护一棵树,用倍增 hash 维护字典序。

    好像也有更简单的做法,但是不会。

    H. Squid Game

    先考虑只有直上直下的链。

    考虑一个贪心:从下往上,尽可能在浅的地方放关键点。

    类似 NOI2020 Day2T2 那样,记录每条链的底端要求在什么位置必须放关键点,DP 即可。

    注意对于 u-LCA-v 链,关键点越浅越优,所以上面的贪心没有满足这样的链,那么在 \(1\) 放个关键点即可。

    复杂度可以做到 \(\mathcal O(n)\)

    I. Mashtali vs Atcoder

    不会证结论,咕了。

  • 相关阅读:
    【MySQL】MySQL的Sequence
    【Spring】Junit加载Spring容器作单元测试
    【Java】JDBC连接MySQL
    【Java】斐波那契数列(Fibonacci Sequence、兔子数列)的3种计算方法(递归实现、递归值缓存实现、循环实现、尾递归实现)
    【Java】Map杂谈,hashcode()、equals()、HashMap、TreeMap、LinkedHashMap、ConcurrentHashMap
    【Java】常见的Set类型,HashSet、TreeSet、LinkedHashSet
    【数据结构和算法】选择排序
    【数据结构与算法】插入排序
    【数据结构与算法】冒泡排序
    【Web】写个HTML页面去调试HTTP接口方便些
  • 原文地址:https://www.cnblogs.com/RiverHamster/p/cf1610.html
Copyright © 2020-2023  润新知