• Harbour.Space Scholarship Contest 2021-2022 (open for everyone, rated, Div. 1 + Div. 2)


    (感觉这场难度都不大啊)

    A. Digits Sum

    $lfloorfrac{n+1}{10} floor$

    B. Reverse String

    枚举

    C. Penalty

    枚举

    D. Backspace

    倒着试图匹配,如果不匹配就连删两个。

    E. Permutation Shift

    注意到 $mleqfrac{n}{3}$,则一个合法排列的环数 $cgeqfrac{2n}{3}$,长度为 $1$ 的环数 $dgeqfrac{n}{3}$(这是由于 $d+2(c-d)leq n$),因此至多只要检查 $3$ 个。

    F. Pairwise Modulo

    新加一个数的时候,要计算他 $mod$ 其他数 和 其他数 $mod$ 他,分别用两个 BIT 维护即可。由于所有数互不相同,BIT 上修改的次数为调和级数,总复杂度两个 log。

    G. Common Divisor Graph

    分个类讨论一下:如果两个数都是偶数,必然连通,那么答案为 $0$。如果两个数恰好一个是偶数一个是奇数,且不连通的话,答案为 $1$。这两个都很好搞,求出所有数的质因子做并查集即可。如果两个数都是奇数,且不连通,答案要么为 $1$ 要么为 $2$,如果存在一个数使得操作它之后能让这两个数连通,则答案为 $1$,这个只需要对每个数求出操作它之后能连通的所有连通块,存在一个 set 中即可。

    H. XOR and Distance

    建出 trie,考虑用 $(p, mask)$ 表示节点 $p$ 所在子树中,这些数异或的值为 $mask$,最小缝隙和最小值最大值是多少。由于 $mask$ 只需要考虑子树内的位,因此总状态数 $O(k2^k)$。然后只要分情况讨论,进行转移即可。

    I. Stairs

    把极长的这种连续段找出来,每个数肯定恰好被覆盖一次。所以根据 $a$ 数组可以直接推断出所有极长的连续段的长度组成的序列 $b$。现在的问题就变成了给定 $b$ 求满足 $b$ 的排列个数。在相邻两个连续段之间的断点不好处理,考虑容斥,即强制某些连续段被合并,然后计算方案的话,就是合并后的连续段数的阶乘 × 2 的长度非 1 的连续段个数次方。考虑分治 NTT,记录最左和最右连续段旁边的这两个断点是否被合并,就可以了。

  • 相关阅读:
    传统金融和互联网金融
    集团培训
    Javascript和JQuery之间的联系
    this和$(this)区别
    原生JavaScript支持6种方式获取元素
    绩效考核
    web服务端安全之分布式拒绝服务攻击
    web服务端安全之暴力破解
    web服务端安全之权限漏洞
    web服务端安全之文件上传漏洞
  • 原文地址:https://www.cnblogs.com/Master-Yoda/p/15175698.html
Copyright © 2020-2023  润新知