• 【考试总结】20220729


    计算两个都不包含圆心的方案和一个不包含一个任意的方案。

    包含圆心等价于凸包上两个相邻的点之间的距离 \(\le \dfrac{L}2\) 。枚举 \(1\sim n\) 中某个点并让其作为长度 \(>\frac{L}2\) 线段的端点。在线段上的点只能选另一个颜色,剩下的可以任选,得到点数之后可以快速幂

    对于后半部分,枚举两个相邻异色点作为断环成链的两个端点。从左端点右端点分别延伸出长度为 \(\frac{L}2\) 的线段,有交则中间部分快速幂。但是这会算重,不过重复的情况都存在分界线,方案数减去分界线数量即可

    分治,将 \(> mid\) 的数字视为 \(1\),否则视为 \(0\)。那么每一层的目标就是将所有 \(1\) 翻到 \(0\) 右边

    将连续的 \(0/1\) 缩成一个,再将每对 \(01\) 视作一段进行一次操作,操作过后再将连续 \(0/1\) 缩起来,段数减半。那么操作次数是 \(\Theta(\log)\) 级别

    当区间不为 \([1,n]\) 时可以并行处理,于是每层操作 \(\Theta(\log)\) 次,一共 \(\Theta(\log)\) 层,由于层数增加时区间长度减小,于是实际上附带了 \(\dfrac{1}2\) 的常数

    对于可能因为翻转产生的 \(1\) 实际上在 \(0\) 右边的情况可以在输出答案的时候将操作序列 \(D_1,\dots D_k\) 翻转。

    实现每层的处理时不必拘泥于模拟上面所说,可以再进行一次分治,每个区间返回区间内 \(1\) 的数量并将区间里面的 \(0\) 翻到 \(1\) 的左侧,合并两个区间只需要翻转 \(0101\) 中间的一对

    定义乘法为狄利克雷卷积,并令 \(p(x)=[\exists i,a_i|x]\) 于是可以得到根权值为 \(n\) 的树的数量 \(f(n)\) 的转移表达式

    \[f=p+\sum_{t\ge 2}f^{t} \]

    注意到非叶子节点本身没有权值,于是可以做些简单和式变换得到:

    \[f=\frac{f^2+p}{1+p} \]

    整道题的答案就是 \(f\) 前缀和的第 \(n\) 项,尝试使用定义式 \(\displaystyle\sum_{i=1}^n (f^2+p)_S(i)(1+p)^{-1}_S(\lfloor\dfrac{n}i\rfloor)\) 来求,左式的 \(f_S(i)\) 表示前缀和第 \(i\) 项。

    \(p_S(n)\) 可以通过 \(2^m\) 的 Venn 图容斥来求一项,注意每个集合的倍数数量的整除除数是集合元素 \(\rm LCM\)

    对于 \((1+p)^{-1}_S\) 使用标准杜教筛来处理,因为 \((1+p)^{-1}*(1+p)=\epsilon\) 。根据定义式这都是成立的,即使 \(1+p\) 并不是传统意义上的积性函数。不过给 \(p\) 附加常数项好像并没有对指数上的运算产生任何影响,我不是很理解。

    对于 \(f^2_S(n)\) 也是用 \(\displaystyle\sum_{i=1}^n f_S(i)f_S(\lfloor\dfrac{n}i\rfloor)\) 来做,乍一看出现了环形转移,但是 \(a_i\ge 2 \Rightarrow f_S(1)=0\) 所以不必担心。

    按照定义式 \(\Theta(n\log n)\) 求出来上述函数的前缀和,其中狄利克雷卷积的逆运算表达式为 \(\displaystyle g(n)=\dfrac{\epsilon(n)-\sum\limits_{d|n\land d\neq 1}f(d)g(\frac{n}d)}{f(1)}\)

    时间复杂度 \(\displaystyle \Theta((n\log n)^{\frac{2}3})\)

  • 相关阅读:
    几个概率题
    几个智力题。。
    [算法]各种二分查找
    深入 JavaScript 时间对象 Date
    Leaflet 调用百度瓦片地图服务
    JavaScript中进制和字符编码问题
    DOM事件流
    flex 弹性布局
    javascript 闭包内部机制
    HTML DOM setAttribute()、与createAttribute()
  • 原文地址:https://www.cnblogs.com/yspm/p/TestReview20220729.html
Copyright © 2020-2023  润新知