a^-1+b problem

Posted leukocyte

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了a^-1+b problem相关的知识,希望对你有一定的参考价值。

  • 题目链接
    uoj#182

  • 前言
    刚看到题以为是毒瘤数据结构,没想到是毒瘤多项式......

  • 题意
    给定一个(n)个元素的序列{(a_n)},有(2)种操作:
    (1.) 给序列中的每个数加(x)
    (2.) 将序列中的每个数变为其逆元(保证此时每个数存在逆元)
    现在有(m)次操作,求每次操作后序列的和。

  • 题解
    首先每个数在操作后一定会变成(frac{ax+b}{cx+d}) 的形式(我这一步没想到,然后直接弃了
    那么我们将其化成(e+f·frac{1}{x+g}) 的形式,令函数(F(x))为这个东西,那么答案为

    [sum_{i=1}^{n} F(a_i)=ne+f·sum_{i=1}^n frac{1}{a_i+g} ]

    这东西看着就知道很不好求,考虑构造函数(G(x)=prod_{i=1}^n (a_i+x)) ,将答案乘上(G(g)),那么就有

    [G(g)sum_{i=1}^n F(a_i)=neG(g)+f·sum_{i=1}^n prod_{j eq i}(a_j+g) ]

    这样就可以考虑再构造函数(H(x)=sum_{i=1}^n prod_{j eq i} (a_j+x)) ,所以

    [sum_{i=1}^n F(a_i)=ne+f·frac{H(g)}{G(g)} ]

    所以就直接离线,多项式多点求值,就做完了。

  • 实现
    (G)可以直接分治(fft)解决,(H)观察一下发现是(G)的导数,可以直接求导解决。
    时间复杂度(O(nlog^2n))











以上是关于a^-1+b problem的主要内容,如果未能解决你的问题,请参考以下文章

分治法求sum(a,b)=1+a+a^2+...+a^b=?

1.python的 a,b=b,a+b 和 a=b b=a+b 的区别

C语言 a = a^b,其中a^b是啥意思?

2022-11-28:给定两个数组A和B,比如 A = { 0, 1, 1 } B = { 1, 2, 3 } A[0] = 0, B[0] = 1,表示0到1有双向道路 A[1] = 1, B[1]

为啥sort((a,b) => a - b ? 1 : -1 )可以对时间戳排序,"sort((a,b) => a - b ? 1 : -1 )"表示啥意思

异或交换两个变量值