• 题解-ARC104


    ARC104


    ARC104A Plus Minus

    小学数学。 aclink(0)


    ARC104B DNA Sequence

    枚举区间然后开个桶统计一下即可。aclink(0)


    ARC104C Fair Elevator

    先确保 (a_i < b_i) 且所有给出的数没有重复。

    (s_i) 表示 (i) 上的桥距。具体地,(s_{a_i} = b_i - a_i)(s_{b_i} = a_i - b_i)

    (a_i, b_i) 合法当且仅当 (s_i) 合法,(s_i) 合法当且仅当它可以拆分成若干长度为 (2k) 的区间,由前半段 (k)(+k) 和后半段 (k)(-k) 个组成。

    考虑到数据范围很小,设 (f_i) 表示 ([0, i)) 是否可以合法。然后转移的时候根据上面的规则判断区间是否可以合法即可。

    aclink(1)


    ARC104D Multiset Mean

    对于所有 (1le ile N),求有多少 (1, 2, ..., N) 最多用 (K) 次组成的可重集平均数为 (i)

    枚举 (i),相当于问有多少 (1 - i, 2 - i, ..., N - i) 最多用 (K) 次组成的可重集和为 (0)

    然后这个东西可以用次数可以为负的生成函数搞成 (N)(2) 项式除以 (N)(2) 项式的形式,并且 (i)(i + 1) 只差一项分子一项分母。暴力乘除即可。

    时间复杂度 (Theta(N ^ 4)),空间复杂度 (Theta(N ^ 3))

    aclink(*0)


    ARC104E Random LIS

    考虑到 (N) 很小,相对大小的种数不会很多,可以暴搜枚举所有 (N) 个数的相对大小。

    然后用组合数学求出这种相对大小的出现次数乘以用 dp 求出最长上升子序列长度即可。

    aclink(*2)


    ARC104F Visibility Sequence

    这种码量的题我搞了一整个下午,觉得我可以退役的可以在评论区里 D 我。

    这种统计容易重复的东西最好想办法在最优值上统计它(下文的至少为 (x))。

    如果把所有 ((i, P_i)) 的边都连出来,那么会形成一棵 (n) 个点的森林。

    如果 (h_j = h_i) 因为当 (i > j)(i) 不会向 (j) 连边,所以可以当作 (h_i > h_j)

    所以可以认为所有值不一样,这样森林就会有个最高点,分成两个小森林。

    考虑区间 dp,设 (f[l][r][x]) 表示 ([l, r)) 的区间最大值为 (x) 且最大值至少为 (x) 的森林数。

    (f[l][r][x]) 可以由 (f[l][mid][a])(f[mid + 1][r][b]) 转移当且仅当 (X[mid] ge x) 并且 (a = x) 或者 (b + 1 = x)。实现的时候需要维护 (f) 数组 (x) 这维的前缀和 (s)

    时间复杂度 (Theta(n ^ 4)),空间复杂度 (Theta(n ^ 3))

    aclink(*1)


  • 相关阅读:
    webkit and the browser
    【技术原创】京东商城价格图片分析解析源代码下载(C#),附演示程序 转
    maglev need 64bit linux version
    sed awk
    VMware公司SpringSource部门宣布收购Gemstone Systems公司
    新手?为什么需要关怀?
    【技术原创】京东商城价格图片分析解析源代码下载(C#),附演示程序 转
    【技术原创】京东商城价格图片分析解析源代码下载(C#),附演示程序 转
    C语言正则表达式库pcre介绍
    人工翻译
  • 原文地址:https://www.cnblogs.com/George1123/p/14684967.html
Copyright © 2020-2023  润新知