首页 > 其他分享 >对于 EI K 逆序对排列计数的另一种自然求和方法的理解

对于 EI K 逆序对排列计数的另一种自然求和方法的理解

时间:2024-01-15 19:55:39浏览次数:49  
标签:frac sum 计数 EI 考虑 prod xt 逆序

有一个简单的 \(O(n^3)\) DP,考虑 \(f_{x + 1, k} = \sum_{j = 0}^{x} f_{x, k - j}\),利用前缀和优化即可。

考虑这实际上是 \(f_{x + 1}(k) = f_x(k) * \frac {1 - k^{x + 1}}{1 - k}\),于是答案实际上为:

\[[x^k]f(x) = \prod_{i = 1}^n \frac {1 - x^i}{1 - x} \]

接下来的方法来自 EI,大力膜拜,这里稍稍细致展开。

考虑加入哑元 \(t\),也就是看似没有用的一个元:

\[f(t) = \prod_{i = 1}^n \frac {1 - x^i t}{1 - x} \]

有一个重要的观察是:

\[f(xt) = \prod_{i = 1}^n \frac {1 - x^{i + 1} t}{1 - x} = f(t) \frac {1 - x^{n + 1} t}{1 - x t} \]

因此有 \((1 - xt) f(xt) = (1 - x^{n + 1}t) f(t)\)。

有一个关键的等式:

\[[t^m] f(xt) = x^m [t^m] f(t) \]

考虑 \([t^m] f(t)\) 是由某 \(k\) 个 \(x^i t\) 选来,现在每一个 \(t\) 都多来了一个 \(x\),那么自然就多了 \(m\) 个 \(x\),于是得到了上式。

考虑设 \(f_m = [t^m] f(x)\),也就是此时将 \(f\) 看作一个关于 \(t\) 的多项式,而系数 \(f_m\) 实际上一个关于 \(x\) 的多项式。

我们在 \((1 - xt) f(xt) = (1 - x^{n + 1}t) f(t)\) 对两边同时取 \([t^m]\),可以得到:

\[\begin{aligned} \\ [t^m] f(xt) - [t^m] xt f(xt) &= [t^m] f(t) - [t^m] x^{n + 1} t f(t) \\ x^m f_m - x \times x^{m - 1} f_{m- 1} &= f_m - x^{n + 1} f_{m - 1} \\ (x^m - 1) f_m &= (x^{n + 1} - x^m) f_{m - 1} \\ f_m &= -x^m \frac {1 - x^{n - m + 1}}{1 - x^m} f_{m - 1} \end{aligned} \]

现在我们考虑如何维护这个函数。

考虑 \(\frac 1 {1 - x^m} = \sum_k x^{km}\),实际上是对于 \(f_{m - 1}\) 做一个间隔为 \(m\) 的前缀和。

考虑 \(1 - x^{n - m + 1}\) 就是 \(f_m(x) \leftarrow f_m(x) - f_m(x - (n - m + 1)\) 即可。

于是考虑 \(g_m = \frac {1 - x^{n - m + 1}}{1 - x^m} g_{m - 1}\),那么

\[f_m = (-1)^m x^{\frac {m \times (m + 1)} 2} g_m \]

\(g\) 是好维护的,最终答案为 \(\sum [x^k] f_m = \sum [x^{k - \frac {m(m + 1)}{2}}] (-1)^m g_m\),发现当 \(m \gt \sqrt k\) 的时候就没有值了,所以只需要维护 \(O(\sqrt k)\) 次卷积,每次是 \(O(k)\) 的,非常优秀。

标签:frac,sum,计数,EI,考虑,prod,xt,逆序
From: https://www.cnblogs.com/jeefy/p/17966189

相关文章

  • 一个小计数问题
    模拟题,复读一下EI老师的营业日志。题意:给出\(n,m,u,v\),试计算:\[[x^n]\prod_{i=1}^{m}\frac{1}{1-(ui+v)x}\bmod998244353\]其中\(n\le10^{18},m\le5\times10^5\)。直接分治NTT算出分式,再套bostan-mori的话复杂度是\(O(m\logm\logn)\)的,难以通过。考虑使用部......
  • openfeign 忽略ssl证书 亲测有效
    请求https接口异常Causedby:javax.net.ssl.SSLHandshakeException:PKIXpathbuildingfailed:sun.security.provider.certpath.SunCertPathBuilderException:unabletofindvalidcertificationpathtorequestedtarget atjava.base/sun.security.ssl.Alert.createSSL......
  • 神经网络优化篇:理解指数加权平均数(Understanding exponentially weighted averages)
    理解指数加权平均数回忆一下这个计算指数加权平均数的关键方程。\({{v}_{t}}=\beta{{v}_{t-1}}+(1-\beta){{\theta}_{t}}\)\(\beta=0.9\)的时候,得到的结果是红线,如果它更接近于1,比如0.98,结果就是绿线,如果\(\beta\)小一点,如果是0.5,结果就是黄线。进一步地分析,来理解如何计......
  • Feign源码解析5:loadbalancer
    背景经过前面几篇的理解,我们大致梳理清楚了FeignClient的创建、Feign调用的大体流程,本篇会深入Feign调用中涉及的另一个重要组件:loadbalancer,了解loadbalancer在feign调用中的职责,再追溯其是如何创建的。在讲之前,我先提个重点,本文章的前期是引用了nacos依赖且开启了如下选项,启用......
  • React 系列 useImperativeHandle
    ReactHooks为我们提供了一种全新的方式来处理组件的状态和生命周期。其中,useImperativeHandle 是一个相对较少被提及的Hook,但在某些场景下,它是非常有用的。本文将深入探讨 useImperativeHandle 的用法,并通过实例来加深理解。什么是 useImperativeHandle?useImperativeHandle......
  • Keil的一点使用技巧
    在开发中Keil的一点使用技巧:使用ARMV6编译器和gun11标准;查找导致进入HardFault_Handler的函数;SAVE命令将数据导出到文件;开启FPU硬件浮点数和添加DSP库使用ARMV6编译器和gun11标准ARMV5编译器已经停止开发了,是时候换到V6编译器了。工具栏OptionsforTarget-Target-CodeGen......
  • quasar <q-page>下面<div>自动计算height的问题
    由于要解决adsense引起的CLSissue,根据https://web.dev/articles/optimize-cls?utm_source=lighthouse&utm_medium=lr给出的建议,在广告的container上加上min-height。<divv-if="$q.platform.is.mobile"class="adsenseunitdetai......
  • https://mp.weixin.qq.com/s/dBVwoInshAv3wMxkx9Sfvw
    优秀的Verilog/FPGA开源项目介绍(三十一)-OFDM(qq.com)OFDM介绍在电信领域,正交频分复用技术(OFDM-orthogonalfrequency-divisionmultiplexing)是一种数字传输类型,在多个载波频率上对数字数据进行编码的方法。OFDM已发展成为一种流行的数字通信方案,用于数字电视和音频广......
  • 黑白hēi bái black white
    黑白发音(Pronunciation):hēibái基本含义(BasicMeaning):指非黑即白,没有中间地带;指非对立即正反,没有模糊之处。详细解释(DetailedExplanation):黑白成语源于中国古代哲学思想,代表着事物的对立面。黑代表阴暗、不好的一面,白代表明亮、好的一面。这个成语常用来形容事物的对立、极端,......
  • 选择通用计数器应该注意这8点、高精度数字频率计
    市场上常见的通用计数器五花八门,会让部分使用人员不知道如何选择通用计数器,今天给大家分享下选择通用计数器的心得,免得在选择通用计数器上误入雷区。1、内置晶振的选择通用计数器首选内置恒温晶振OCXO,并且准确度越高越好,因为时间间隔准确度=内部晶振频率偏差*TO+固定误差,因此时间......