zoukankan      html  css  js  c++  java
  • 正睿十连测 第一天 简要题解

    (A.Stone)
    首先有一个结论是 , 任意一个数 (n) 都可以拆成 (3) 个形如 ({k choose 2}) 的数的和。
    因为 (3k^2 - 3k + 1 = 6{k choose 2} + 1) , 所以对于任意一个数 (n) ,最多需要 (8) 个这样的数就能将其组合出。
    接着, 我们注意到 (6{k choose 2} + 1 equiv 1 (mod 6)) ,那么有 (ans equiv n(mod 6)) , 因此只需判断 (ans)(1) 还是 (8) , 是 (2) 还是 (6)
    注意到 (10^{11}) 内的形如 (3k ^ 2 - 3k + 1) 的数是根号级别的。 于是直接预处理这些数。 对于第一种情况二分求解 , 第二种情况 (two-pointers) 扫描, 即可。
    时间复杂度 : (O(sqrt {limit}))(limit = 10 ^ {11})
    (B. Palindrome)
    首先做一遍 (Manacher) 算法。
    枚举 (1 over 3) 处 , 用扫描线 + (BIT) 维护。
    时间复杂度 : (O(NlogN))
    (C. Random)
    首先我们知道随机树高是 (sqrt n)级别的。
    由期望的线性性质 , 我们不妨对于每个点计算贡献, 那么每个点最多有 (sqrt n) 个祖先。
    问题转化为 ,有一个数组 , (a_{1} , a_{2} , a_{3} , ...... , a_{m}) , 选择一个排列 ,每次将当前数及后面的数加上其权值, 最后问第 (m) 个位置上的数的期望。
    我们发现这个贡献等价于以 (1) 为开头的上升子序列数量 , 那么直接用组合数的一些技巧就行了。
    时间复杂度 : (O(n sqrt n))

  • 相关阅读:
    关于ListView
    Camera2
    线程池
    运输层
    计算机网络体系结构
    USACO 2016 US Open Contest Gold T2: Closing the Farm
    USACO 2016 US Open Contest Gold T1: Splitting the Field
    USACO 2016 February Contest Gold T3: Fenced In
    USACO 2016 February Contest Gold T2: Circular Barn Revisited
    USACO 2016 February Contest Gold: T1 Circular Barn
  • 原文地址:https://www.cnblogs.com/evenbao/p/13585015.html
Copyright © 2011-2022 走看看