zoukankan      html  css  js  c++  java
  • 2020.12.12 刷题总结

    有意思一点的题:

    • ACWing 97 约数之和(Sumdiv)
    • ACWing 98 分形之城(Fractal Streets)
    • ACWing 100 ( ext{IncDec})序列

    ACWing 97 约数之和(Sumdiv)

    (A^B)的约数和,对(9901)取膜。

    爆算显然不行,我们考虑将(A)分解质因数成(p_1^{c_1}p_2^{c_2}cdots p_n^{c_n}),那么(A^B = p_1^{Bc_1}p_2^{Bc_2}cdots p_n^{Bc_n})。答案即为

    [prod_{i = 1} ^ n sum_{j = 0} ^ {c_i} p_i^j ]

    考虑如何求(sum limits_{j = 0} ^ {c_i} p_i^j)这块,用等比数列求和?无法取膜。

    ( ext{sum}(p,c))(sum_{i = 0} ^ c p^i)

    [ ext{sum}(p,c) = egin{cases} 0 & p = 0\ 1 & c = 1\ (p^{(c + 1) / 2} + 1) imes ext{sum}(p,(c - 1) /2) & p 为奇数\ (p^{c / 2} + 1) imes ext{sum}(p,c / 2 - 1) + p^c & p 为偶数\ end{cases} ]

    分治计算即可,对于那个分治的式子,应该有点数学素养就推出来了吧(

    ACWing 98 分数之城(Fractal Streets)

    这题要命。
    (A,B)(N)等级下的坐标,然后用欧几里得距离计算即可。

    考虑问题为( ext{calc}(A,B,N)),先算出( ext{calc}(A,B,N - 1)),然后:
    考虑对于某一点坐标((x,y))

    • 如果在(N)等级的左上角,相当于先顺时针旋转(90)度,然后再水平翻转。

    我们小学二年级的时候就学过任意坐标的旋转,若一个点绕原点旋转( heta)度后的坐标为

    [(x,y) cdot left[ egin{matrix} cos{ heta} & sin{ heta}\ -sin{ heta} & cos{ heta}\ end{matrix} ight] ]

    旋转后得((-y,x)),翻转后得((y,x))

    • 如果在(N)等级的左下角,相当于先逆时针旋转(90)度(顺时针旋转(270)度),然后再水平翻转。
      而且因为在下方,还需要进行一系列加,所以得((2^N - y + 1,2^{N - 1} - x + 1))
    • 如果在(N)等级的右上角,得((x,y + 2^{N - 1}))
    • 如果在(N)等级的右下角,得((x + 2^{N - 1},y + 2^{N - 1}))

    分治即可。

    ACWing 100 ( ext{IncDec Sequence})

    这题没有秒,悲。

    建立差分数组(b_i = a_i - a{i - 1})。考虑所有数都一样的要求,即对于(2 le i le n)(b_i = 0)。第二个询问即为进行操作后的(q_1)的值域大小。

    那么问题就变为了修改(b_2,b_3,cdots b_n),使其全为(0)

    变换方式:

    • (b_i,b_j),如果(b_i,b_j)一正一负就正好,最优。
    • (b_1,b_i) 如果没有第一种修改方式合法的了,那么可以选择这种,因为修改(b_1)不影响合法性。
    • (b_1,b_{n + 1}) 同第二种
      (cnt_1)为所有(b_i > 0)(b_i)和,(cnt_2)为所有(b_i < 0)(|b_i|)和。

    那么使用第一种方法显然为(min(cnt_1,cnt_2))次。

    使用二三种方法显然为剩下来的,即为(|cnt_1 - cnt_2|)次。

    那么第一问就是(min(cnt_1,cnt_2) + |cnt_1 - cnt_2| = max(cnt_1,cnt_2))

    第二问显然是使用第二种变换方式的次数的方案数,即为(|cnt_1 - cnt_2| + 1)(因为可以不使用方案2所以要+1)

  • 相关阅读:
    JID 2.0 RC4 发布,高性能的 Java 序列化库
    FBReaderJ 1.6.3 发布,Android 电子书阅读器
    Arquillian 1.0.3.Final 发布,单元测试框架
    JavaScript 的宏扩展 Sweet.js
    Hypertable 0.9.6.5 发布,分布式数据库
    JRuby 1.7.0 发布,默认使用 Ruby 1.9 模式
    httppp 1.4.0 发布,HTTP响应时间监控
    Redis 2.6.0 正式版发布,高性能K/V服务器
    OfficeFloor 2.5.0 发布,IoC 框架
    XWiki 4.3 首个里程碑发布
  • 原文地址:https://www.cnblogs.com/luyiming123blog/p/14127269.html
Copyright © 2011-2022 走看看