• 2022 杭电多校第一场


    A String

    大概就是把 NOI2014动物园 这个题加了个编号模 \(k\) 的限制条件。
    先建出 \(\rm fail\) 树,在 \(\rm fail\) 树上跳可以找出每个节点 i 对应的满足 \(2j>i\) 的最小祖先 \(j\)
    \(i\) 的答案就是 \(j\)\(i\) 这条链上满足 \(2x\equiv i({\rm mod}\ k)\) 的节点 \(x\) 数目,
    差分拆成 \({\rm fail}(j)\) 到根的贡献和 \(i\) 到根的贡献,做一次 dfs 即可统计出答案,时间复杂度 \(O(\sum |S|)\)

    B Dragon Slayer

    直接暴力枚举去掉哪些墙,然后 bfs 检验一下是否连通即可。

    C Backpack

    \(f(i,j,k)\) 表示考虑了前 \(i\) 个物品,体积和为 \(j\) ,价值 xor 和为 \(k\) 的方案是否存在,用 bitset 压位即可。

    D Ball

    枚举两个点 \(A,B\),若 \(A,B\) 之间的距离是质数,则考虑找第三个点 \(C\) 使得 \(dis(A,C)\ge dis(A,B),dis(B,C)\le dis(A,B)\)

    于是可以先将所有点两两之间的距离从小到大排序,并按照顺序枚举 \(dis(A,B)\) 与对应的 \(A,B\) ,对每个点维护两个 bitset 表示其他点到这个点的距离是否大于等于/是否小于等于当前枚举的 \(dis(A,B)\) ,那么计算合法的 \(C\) 点数目只需要将 bitset 求交即可,时间复杂度 \(O(\frac{n^3}{w})\)

    E Grammar

    题面太长太啰嗦,先鸽。

    F Travel Plan

    显然可以用莫比乌斯反演转化为对于每个 \(x\) ,只保留权值是 \(x\) 倍数的边形成的图的简单路径计数。

    而由图中不存在偶环可以推出每条边最多只被一个环包含,即图是一个仙人掌,在仙人掌上 dp 求路径数即可。

    G Treasure

    首先建出并查集重构树,具体来说,用 Kruskal 找一棵最小生成树,并且每次向生成树中新增边时,就新增一个虚点连向这次合并的两个连通块。那么每次询问时,\(x\) 点能通过权值 \(\le y\) 的边到达的所有点一定会形成一棵子树,可以通过倍增跳祖先的方式找到这棵子树。考虑维护每棵子树的答案,那么当增大 \(x\) 点的权值时,可能影响 \(x\) 的所有祖先的答案,而这些影响可以拆成不超过 10 个连续段(若有某个 property 与 \(x\) 相同的点 \(y\) ,则答案变化量可能在 \(x\)\(y\) 的 LCA 处发生变化),差分之后变成单点修改与区间求和,用树状数组即可维护答案,时间复杂度 \(O(10n\log n)\)

  • 相关阅读:
    spring in action小结4.1
    spring in action小结3 运行时值注入
    python-__init__.py 与模块对象的关系
    Python-常用库扩展
    Qt-优化布局结构
    Python-文件修改器
    C语言-数据结构(一)
    Python-PyQt4学习笔记
    Python-PyQt4学习资料汇总
    Linux-查看C语言手册及man的特殊用法
  • 原文地址:https://www.cnblogs.com/jklover/p/16499851.html
Copyright © 2020-2023  润新知