• CF1276


    Codeforces Round #606 (Div. 1, based on Technocup 2020 Elimination Round 4)

    A

    只有 (one) 时删 (n),只有 (two) 时删 (w),出现 (twone) 时删 (o)

    B

    发现 (a,b) 一定为割点,那么 (a,b) 将整张图分成了三个点集,没有被 (a,b) 夹在中间的两部分点集的大小乘积即为答案。

    C

    枚举短边长度 (r),发现一个数 (x),最多能填入当前矩形 (min(cnt_x,r)) 个,(cnt_x)(x) 的出现个数。设 (sum=sumlimits_x min(cnt_x,r)),得长边长度最长为 (leftlfloor frac{sum}{r} ight floor)。因为短边最长为 (sqrt n),所以这样就能 (O(nsqrt n)) 求解答案了。构造方案时,将所有数按 (cnt_x) 排序,按顺序在斜着填即可。

    D

    (f_{x,0/1/2}) 表示在 (x) 子树内对应情况的方案数,(0)(x) 被编号小于其父边的边删去,(1) 为通过父边删去 (x)(2) 为通过父边删去 (x) 父亲。设 (x) 儿子个数为 (k)(d) 及其之前的儿子对应的边都比父边编号小,即父边编号在 (d)(d+1) 对应的边的编号之间,得转移为:

    [largeegin{aligned} f_{x, 0} &= sum_{i = 1}^d f_{y_i, 2}prod_{j = 1}^{i - 1}(f_{y_j, 0} + f_{y_j, 1}) prod_{j = i + 1}^k (f_{y_j, 0} + f_{y_j, 2}) \ f_{v, 1} &= prod_{i = 1}^{d}(f_{y_i, 0} + f_{y_i, 1}) prod_{i = d + 1}^k (f_{y_i, 0} + f_{y_i, 2}) \ f_{v, 2} &= sum_{i = d + 1}^k f_{y_i, 2}prod_{j = 1}^{i - 1}(f_{y_j, 0} + f_{y_j, 1}) prod_{j = i + 1}^k (f_{y_j, 0} + f_{y_j, 2}) + prod_{i = 1}^k (f_{y_i, 0} + f_{y_i, 1}) end{aligned} ]

    可以给根节点一个虚拟父亲,(0) 为根节点被删,(1) 为根节点没被删,因此答案为 (f_{1,0}+f_{1,1})。记录前缀积和后缀积即可快速转移。

    E

    在⛏了

    F

    能对答案产生贡献的串有 (varnothing,*,s,s*,*s,s*t),只有 (s*t) 不好统计。

    分别建正串和反串的 (SAM),设第 (i) 个位置为 (*),考虑在以 (i-1) 为后缀对应的节点统计以 (i+1) 为前缀的节点的贡献。将 (i+1) 在反串的 (SAM) 对应的节点挂到 (i-1) 在正串的 (SAM) 对应的节点上。用 (set) 启发式合并维护每个点子树内所有挂着的节点的集合,该集合的贡献为这些点在 (Parent) 树上到根节点的链的并,通过 (dfs) 序即可维护。

  • 相关阅读:
    hadoop上的C++程序开发
    some phrase for oral english
    python的安装,IDLE基本操作
    of这个变态
    一分钟先生: 程序员面试真经
    Cloud Tool 小探索
    【学习总结】数学-欧拉函数
    第三篇——第二部分——第一文 SQL Server镜像简单介绍
    NYOJ 915 +-字符串
    人类主动探索地外文明(METI)活动正在进行中
  • 原文地址:https://www.cnblogs.com/lhm-/p/13817029.html
Copyright © 2020-2023  润新知