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

  • 相关阅读:
    C# IL语法
    设计模式学习笔记(1)之单例模式
    设计模式学习笔记(3)之策略设计模式(Strategy)
    ORACLE与SQL SERVER语法区别
    浅谈测试驱动开发(TDD)
    面向对象的5条基本设计原则
    干法读后感磨练灵魂 提升心志
    Linux系统管理之硬盘管理
    Linux硬件信息采集
    Linux iptables
  • 原文地址:https://www.cnblogs.com/zhouzj2004/p/14418534.html
Copyright © 2011-2022 走看看