博客
关于我
Atcoder训练实录
阅读量:104 次
发布时间:2019-02-26

本文共 1407 字,大约阅读时间需要 4 分钟。

ARC093-E - Bichrome Spanning Tree

这个问题看起来不算太难,但自己还是会觉得做不出来。题目要求构造一个同时包含黑边和白边的MST(最小生成树)。首先,回顾一下MST的基本知识,原图的MST是由M、S、T组成的,边权和为S。接下来,需要对每条不在当前MST中的边进行分析,计算其权重减去可以替换掉MST中最大边权的值。

分类讨论如下:

  • 当S > X时,无解

    • 设eq为所有num[i]等于X-S的数量,up为所有num[i]大于X-S的数量。当S > X时,eq和up的值会导致无解。
  • 当S = X时

    • 这时有两种操作:
      • 第一种操作:直接将MST替换为包含X的新图。
      • 第二种操作:构建一个新的MST,使其满足特定条件。具体计算公式为:[(2n - 1 - 2) \times 2^m - n + 1]这里去除了全为黑或白的边。
  • 当S < X时

    • 贡献值由第二种操作决定,具体计算公式为:[2 \times (2^{eq} - 1) \times 2^{up}]
  • ARC095-F - Permutation Tree

    这个问题需要分析构造的树的性质。通过从小到大枚举数的方法,每个数i的位置记为mx。每个i首先与当前最右的点mx连边,然后与i所在位置取最大值max。这种方法构造的是一个链状结构,每个点在链上挂有一些子点。

    构造的树实际上是一条链,链上每个点挂有若干点。通过分析链上的点数量cnt[i],可以发现树的构造方法是从小到大依次挂点,且每次挂的位置是当前最大点的右侧。这样构造出的树的特点是链状结构,且每个点的编号按照字典序递增。

    当枚举到链上的第lst个点时,需要为每个点分配编号。分配方式是将当前最右的点mx与i连边,然后将mx与i的位置取最大值max作为新的最右点。这样可以确保树的构造是字典序最小的。

    ARC095-E - Symmetric Grid

    这个问题需要考虑行和列的匹配。通过枚举行的匹配行和列的匹配列,可以利用列的逆序来判断是否满足条件。具体来说,枚举每行的匹配行与每列的匹配列,判断某列的逆序是否与另一列同构。

    通过对行和列的匹配方式进行分析,可以发现状态数较少,从而简化问题。通过枚举行的匹配行和列的匹配列,可以快速判断是否满足条件。

    ARC096-F - Sweet Alchemy

    这个问题需要考虑每个物品的选择次数。每个物品有不同的选择次数,且每次选择会增加一棵子树。通过分析物品的选择次数,可以发现以1为根的子树可以无限选,而其他子树只能选有限次数。

    通过贪心算法,可以选择每个物品取min(n, D)个,剩余的用贪心贡献。贪心策略的核心是每次选择贡献值最大的物品,这样可以确保最终结果的优化。

    ARC096-E - Everything on It

    这个问题需要使用容斥原理来计算非法选择的方案数。通过设f[i]为至少有i个非法选择的方案数,可以得到一个复杂的求和式。通过对式子的展开和化简,可以发现它实际上是在计算不包含非法选择的方案数。

    通过对式子的展开,可以发现它涉及斯特林数和其他组合数学的概念。最终,通过对式子的化简,可以得到一个与n^3logn相关的复杂度。

    总结

    通过对上述问题的分析,可以发现它们都需要结合不同的数学概念和算法技巧来解决。从MST的构造到树的构造,再到容斥原理的应用,每个问题都需要深入的思考和细致的分析。

    转载地址:http://wrmu.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现KNN算法(附完整源码)
    查看>>
    Objective-C实现koch snowflake科赫雪花算法(附完整源码)
    查看>>
    Objective-C实现KPCA(附完整源码)
    查看>>
    Objective-C实现KruskalMST最小生成树的算法(附完整源码)
    查看>>
    Objective-C实现kth order statistick阶统计量算法(附完整源码)
    查看>>
    Objective-C实现Lempel-Ziv压缩算法(附完整源码)
    查看>>
    Objective-C实现logistic regression逻辑回归算法(附完整源码)
    查看>>
    Objective-C实现LongestIncreasingSubsequence最长递增子序列算法(附完整源码)
    查看>>
    Objective-C实现Lower-Upper Decomposition上下分解算法(附完整源码)
    查看>>
    Objective-C实现lowest common ancestor最低共同祖先算法(附完整源码)
    查看>>
    Objective-C实现LRU 缓存算法(附完整源码)
    查看>>
    Objective-C实现LRU缓存(附完整源码)
    查看>>
    Objective-C实现lstm prediction预测算法(附完整源码)
    查看>>
    Objective-C实现lucas数列算法(附完整源码)
    查看>>
    Objective-C实现Luhn (Mod 10)Algorithm算法(附完整源码)
    查看>>
    Objective-C实现LZW编码(附完整源码)
    查看>>
    Objective-C实现MAC桌面暗水印(附完整源码)
    查看>>
    Objective-C实现markov chain马尔可夫链算法(附完整源码)
    查看>>
    Objective-C实现MATLAB中Filter函数功能(附完整源码)
    查看>>
    Objective-C实现matrix exponentiation矩阵求幂算法(附完整源码)
    查看>>