zoukankan      html  css  js  c++  java
  • 10.11 牛客

    10.11 牛客


    得分情况

    30 + 0 + 40 + 0 = 70


    题解

    T1 最终测试

    (30 Pts)

    枚举所有可能性 对于每种可能性 对选手排序得到排名


    (60 Pts)

    (E_i) 表示第 (i) 为选手的期望排名 (s_i) 为第 (i) 位选手的得分 有:

    [E_i = 1 + sum_{j e i}P(s_i < s_j)\ = 1 + sum_{j e i}frac 1{16}sum_{0 leq x1, x2, y1, y2 leq 1} [x_1a_{i, 1} + x_2a_{i, 2} < y_1a_{j, 1} + y_2a_{j, 2}] ]

    复杂度: (O(n^2))


    这一部分的代码


    (100 Pts)

    看上面那个式子 (j) 的枚举与 (x_1, x_2) 是不影响的 可以交换枚举的顺序

    [E_i = 1 + frac 1{16} sum_{0 leq x_1, x_2 leq 1}sum_{j e i}sum_{0 leq y_1, y_2 leq 1} [x_1a_{i, 1} + x_2a_{i, 2} < y_1a_{j, 1} + y_2a_{j, 2}] ]

    考虑里面的两个求和 当 (x_1a_{i, 1} + x_2a_{i, 2}) 确定之后就是求比其大的数的个数 将所有数存下来排个序 每次查询的时候二分

    复杂度: (O(nlog n))


    这一部分的代码


    T2 空间跳跃

    题解说 (dfs) 期望能通过 (40\%) 的数据 但是 BS 爆零了


    将构造过程反过来 看成从 (n)(1) 的构造 那么操作 (2, 3) 可以看成 (n = frac n2)(n = frac n3 + 1)

    题解说根据 (3n + 1) 猜想 对于给定的范围 只要 (n) 为偶数就让 (n = frac n2) 的话 正整数的 (n) 必然能到达 (1) 负整数的 (n) 必然能落到 (-1, -5, -17)

    (n) 的绝对值足够小之后可以使用操作 (1) 将其变为正整数 在使用操作 (2, 3)(n) 变为 (1)

    题解说通过验证这样的构造不会超过 (1500)


    代码


    T3 快速访问

    题目要求维护一个点集到某个点的距离的平方和

    直接差了

    [sum_{v in S}dis(u, v)^2 = |S|dep_u + sum_{v in S}dep_v^2 + 4sum_{v in S}dep_{lca(u, v)} + 2dep_usum_{v in S}dep_v - 4dep_usum_{v in S}dep_{lca(u, v)} - 4sum_{v in S}dep_vdep_{lca(u, v)} ]

    分别维护后面每一项即可

    后面那一坨东西的第一项 第二项 第四项是可以直接维护的 其他项可以通过树剖维护

    这里只补一个东西

    [sum_{i = 1}^k(2i - 1) = 2sum_{i = 1}^ki - k = 2 imes frac {(1 + k)k}2 - k = k^2 ]

    然后就可以直接做了


    代码


    T4 门童

    咕~

  • 相关阅读:
    XML介绍
    JavaScript基础
    pygame模块参数汇总(python游戏编程)
    CSS3
    CSS( Cascading Style Sheets )简书
    HTML5
    用python进行应用程序自动化测试(uiautomation)
    HTML入门
    Selenium2 (python)
    C#快速入门
  • 原文地址:https://www.cnblogs.com/blank-space-/p/15402314.html
Copyright © 2011-2022 走看看