• 2021.2.19[2021省赛模拟] 总结


    2021.2.19省赛模拟总结

    下午做模拟赛,有一种午后休闲养生的奇异体验...

    得分:30(100) + 100(70) + 0(0) = 130

    (T1) 乘法没开 (long long) 表示很淦。

    T1.天外飞仙(god)

    可以发现抓拍一个天外飞仙的代价是关于 (t) 的一次函数,表达式为

    [y = (r_i - l_i + 1)(x_i + y_i)t + sum_{j = l_i}^{r_i} {s_i - c_j} ]

    求出表达式后大致有两种做法:

      1. 求出上凸壳,二分求答案
      1. 把直线塞进李超树,直接查询

    T2.守望先锋(overwatch)

    考虑没有询问,可以设状态 (f_{u, i, 0/1}) 表示点 (u) 开始向下延伸 (j) 个点的能力值之和的 最大 / 次大 值,转移很简单。

    那么最后答案为

    [max_{i = 1}^{n}{max_{j = 1}^{m}{ egin{cases} f_{i, j, 0} + f_{i, m - j + 1, 0} , & [g_{i, j, 0} eq g_{i, m - j + 1, 0}] \[2ex] max(f_{i, j, 0} + f_{i, m - j + 1, 1}, f_{i, j, 1} + f_{i, m - j + 1, 0}) , & [g_{i, j, 0} = g_{i, m - j + 1, 0}] end{cases} }} ]

    其中 (g_{i, j, 0}) 表示 (f_{i, j, 0}) 由点 (i) 的哪个儿子转移过来,保证 (g_{i, j, 0} eq g_{i, j, 1})

    对于修改点 (u),发现其影响到的点只有 (u)(u) 以上的 (m - 1) 个祖先,所以我们考虑对于每个点 (u),将其儿子分别塞入 (m)(set) 中(分别对于 (m) 个深度),那么每次修改就是 (O(k^2 log{n})) 的,查询的话可以再用一棵线段树存下每个点 (set) 中最大值 + 次大值。

    总时间复杂度 (O((q + n) k^2 log{n}))

    但是由于保证数据纯随机,所以修改时暴力重新转移 (m) 个点也能过。

    T3.甲鱼漂泊(jypb)

    只会打表找规律。

    首先可以知道 (ans(1, x) = 2^{x - 1}, ans(x, 1) = 2^x - 1)

    然后又可知:

    [ans(p, q) = egin{cases} ans(p - q, q) cdot 2 + 1 , & [p < q] (1) \[2ex] ans(p, q - p) cdot 2 , & [p > q] (2) end{cases} ]

    发现此过程类似辗转相除法,所以考虑每次直接模,对于 ((2))就是 (ans(p, q - p) cdot 2^{p / q})

    对于 ((1)),假设我们在对一个二进制数操作,那么每次操作其实就是在二进制数的末尾加 (1),那么最后就是 (ans(p - q, q) cdot 2^{q / p} + 2^{q / p} - 1)

    光速幂预处理 (2) 的幂即可。

  • 相关阅读:
    【深入理解JAVA虚拟机】第一部分.走进Java
    【设计模式最终总结】桥接模式 VS 外观模式
    【设计模式最终总结】组合模式:树形结构的处理
    【设计模式最终总结】桥接模式(接口模式):处理多维度变化
    【设计模式最终总结】适配器模式
    深入编解码:ASCII,UNICODE,UTF8等
    好妈妈【第四章】培养良好的学习习惯
    【设计模式最终总结】建造者模式:复杂对象的组装与创建
    上火流鼻血
    Spring Data Jpa 学习笔记
  • 原文地址:https://www.cnblogs.com/zhouzj2004/p/14418534.html
Copyright © 2020-2023  润新知