zoukankan      html  css  js  c++  java
  • 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) 序即可维护。

  • 相关阅读:
    【NOIp复习】图论算法模板合集
    【NOI导刊】【归并排序求逆序对】最接近神的人
    【NOIp 2012】【线段树】借教室
    【NOIp复习】最近公共祖先LCA&区间最大最小RMQ
    【NOIp 2015】【二分答案】跳石头
    【NOIp 2015】【DFS】斗地主
    【vijos】【BFS+hash】毒药?解药?
    【NOIp模拟】【dp】俄罗斯方块
    【NOIp模拟】【二分图or并查集】GoToandPlay
    【vjios】【DFS】切蛋糕
  • 原文地址:https://www.cnblogs.com/lhm-/p/13817029.html
Copyright © 2011-2022 走看看