首页 > 其他分享 >闲话 23.1.8

闲话 23.1.8

时间:2023-01-08 20:33:42浏览次数:58  
标签:infty le frac ix 闲话 sum 23.1 序列

闲话

怎么了的 洛谷不能交太长的代码是吧
经过测试大概码长分界线在 11369 ~ 11381
听 uq 有人说博客太长也不让提交?
而且发现 ABC284 的题已经整一天了都没上
洛谷是不是在作什么大动作?

今日推歌是《ぼくらの16bit戦争(Remaster ver)》sasakure.UK feat.GUMI

推荐博客:多项式 I:拉格朗日插值与快速傅里叶变换, Alex_Wei

拉格朗日插值例题和做法不是拉格朗日插值的题

感觉拉格朗日插值这边的题要么就是求个 \(S_k(n)\),要么就是看出什么东西可以用多项式表示然后直接插出来系数接着做。
总的来说就是个小工具。

首先需要说明的是,\(f(x) - f(x - 1)\) 是一个关于 \(x\) 的 \(n\) 阶多项式,就表示 \(f(x)\) 是一个关于 \(x\) 的 \(n + 1\) 阶多项式。

简单挑几道题说说。

成绩比较

题面长,不粘。

“恰好”不好求,考虑容斥转化为“至少”。设 \(f_i\) 为至少 \(i\) 人被碾压的方案数。

钦定 \(i\) 个人被碾压,首先选出这些人来。然后对于每一科 \(j\) 我们在没有被钦定的 \(n - i -1\) 人里选择大于 B 神的 \(r_j - 1\) 个人,最后枚举 B 神在这一科的分数,然后每边随意选择。得到

\[f_i = \binom{n}{i} \prod_{j=1}^n \binom{n - i - 1}{r_j - 1} \sum_{k = 1}^{u_j} k^{n - r_i} (u_j - k)^{r_j - 1} \]

发现后面那个对 \(k\) 的求和很难直接做,因此需要针对它化简一下。其实做差分后也能看出后面的是个对 \(u_i\) 的 \(n\) 次多项式。推一下:

\[\begin{aligned} & \sum_{k = 1}^{u_j} k^{n - r_i} (u_j - k)^{r_j - 1} \\ = \ & \sum_{k = 1}^{u_j} k^{n - r_i} \sum_{t = 0}^{r_j - 1}\binom{r_j-1}{t} u_j^{r_j - 1 - t} (-k)^{t} \\ = \ & \sum_{t = 0}^{r_j - 1}(-1)^t \binom{r_j-1}{t} u_j^{r_j - 1 - t} \sum_{k = 1}^{u_j} k^{n - r_i + t} \end{aligned}\]

好了。然后就没啥了,你直接上一个拉插就能在 \(O(n^2 m)\) 的复杂度内得到每个 \(f_i\)。答案即为

\[\sum_{i=k}^{n-1} (-1)^{i - k} \binom {i}{k} f_i \]

Submission.



tyvj 1858 XLkxc

\(T\) 组询问,每组询问给定 \(k,a,n,d\)。

定义

\[f(n)=\sum_{i=1}^n i^k\qquad g(n)= \sum_{i=1}^n f(i) \qquad h(n) = \sum_{i=0}^n g(a + id) \]

\[h(n) \bmod 1234567891 \]

的值。

通过差分几次能得到 \(h(n)\) 是一个关于 \(n\) 的 \(k + 3\) 次多项式。

我们能方便的求得 \(f\),自然可以方便地求得 \(g\) 的前 \(k + 2\) 个点值。自然可以方便地求得答案的前 \(k + 3\) 个点值。

然后一层一层地求即可。

Submission.



calc

一个长度为 \(n\)、元素值域在 \([1,k]\) 间且各个元素互不相同的序列 \(a\) 对答案的贡献为 \(\prod_{i=1}^n a_i\)。给定 \(k, n_0\) 对每个 \(1\le n \le n_0\),求所有本质不同的长度为 \(n\) 的序列的权值和对 \(998244353\) 取模的值。

\(1\le n_0 \le 5\times 10^5,\ n_0\le k < 998244353\)。

谁用拉插做这种题啊,又难想复杂度也不优,还不如直接 DP 转生成函数!

我们考虑一个 DP 计算答案。元素互不相同启发我们在值域上做长度相关的 DP,设 \(f_{i, j}\) 为当前决策 \(i\) 选不选,当前计数的序列长度为 \(j\)。考虑当前值 \(i\) 是否选择,容易写出转移方程

\[f_{i, j} = f_{i-1,j} + if_{i-1,j-1} \]

然后对第一维求和得到

\[F_i(x) = \sum_{j=0}^{\infty} f_{i, j} x^j = \sum_{j=0}^{\infty} f_{i-1,j} x^j + i\sum_{j=0}^{\infty} f_{i-1,j-1} x^j = F_{i-1}(x) + ixF_{i-1}(x) \]

也就是

\[F_{k}(x) = (kx + 1) \times F_{k-1}(x) = \prod_{i=1}^k (ix + 1) \]

\(F_0(x) = 1\)。我们需要提取这玩意的第 \(n\) 项系数。容易想到一个 \(\prod\) 的经典套路是 \(\ln + \exp\),首先作对数。

\[\begin{aligned} & \ln \prod_{i=1}^k (ix + 1) \\ = \ & \sum_{i=1}^k \ln(ix + 1) \\ = \ & \sum_{i=1}^k \int \frac{i}{ix + 1} \text dx \\ = \ & \int \sum_{i=1}^k i(ix + 1)^{-1} \text dx \\ = \ & \int \sum_{i=1}^k i\sum_{t=0}^{\infty} (-i)^t x^t \text dx \\ = \ & \sum_{i=1}^k i\sum_{t=0}^{\infty} (-i)^t \frac{x^{t + 1}}{t + 1} \\ = \ & \sum_{i=1}^k i\sum_{t=1}^{\infty} (-i)^{t - 1} \frac{x^t}{t} \\ = \ & \sum_{t=1}^{\infty} \frac{(-1)^{t + 1}}{t} \sum_{i=1}^k i^t x^t \end{aligned}\]

考虑到后面这个东西不是很好刻画,我们可以通过比对系数的方式来转化。具体地,我们考虑对后面的 \(\sum\) 单独构造生成函数,在需要转化回 \(\ln F_k(x)\) 的时候第 \(t\) 项乘入 \((-1)^{t + 1}/t\) 即可。
考虑到这个生成函数的第 \(i\) 项是等比数列求和的形式,我们可以通过 \(e^{px}\) 的 \(\text{EGF}\) 刻画其形式。具体地,我们构造

\[G(x) = \sum_{t=0}^{\infty} \sum_{i=1}^k i^t \frac{x^t}{t!} = \sum_{i=1}^k \sum_{t=0}^{\infty} \frac{(ix)^t}{t!} = \sum_{i=1}^k e^{ix} = \frac{e^{(k + 1)x} - 1}{e^x - 1} \]

随后提取 \(x^t / t!\) 即可。带回原式得到

\[\begin{aligned} & \ln \prod_{i=1}^k (ix + 1) \\ = \ & \sum_{t=1}^{\infty} \frac{(-1)^{t + 1}}{t} [x^t / t!] \frac{e^{(k + 1)x} - 1}{e^x - 1} \\ = \ & \sum_{t=1}^{\infty} (-1)^{t + 1}(t-1)! [x^t] \frac{e^{(k + 1)x} - 1}{e^x - 1} \end{aligned}\]

我们容易对给定的 \(t\) 构造出 \(e^{tx}\),随后只需要做一次多项式求逆便可得到 \(G(x)\) 了。由于上下两个多项式的常数均为 \(0\),因此可以作约分,最终多项式求逆是不受影响的。得到 \(G(x)\) 后转化为 \(\ln F_k(x)\) 是显然的。对结果做 \(\exp\) 后我们就构造出了 \(F_k(x)\),其前 \(k\) 项即为答案。

总时间复杂度视实现方法而定,为 \(O(n\log n)/O(\frac{n\log^2 n}{\log \log n})\)。半在线卷积真香啊!

Submission.



ABC284G

对于一个长度为 \(n\)、其中元素取值为 \([1,n]\) 内整数的序列 \(A = (A_1, A_2, \dots, A_n)\),以及一个整数 \(i(1\le i \le n)\),我们按如下方式定义一个长度为 \(10^{100}\) 的序列 \(B_i = (B_{i, 1}, B_{i, 2}, \dots, B_{i, 10^{100}})\):

  • \(B_{i, 1} = i\)。
  • \(B_{i, j + 1} = A_{B_{i, j}} (1 \le j < 10^{100})\)。

此外,我们定义 \(S_i\) 为 \(B_i\) 中只出现一次的整数的数量。定义一个序列的贡献为 \(\sum_{i=1}^n S_i\)。

给定正整数 \(n, m\),你需要求出总共 \(n^n\) 种可能的序列的贡献之和模 \(m\) 的值。

\(1\le n \le 2\times 10^5,\ 10^8 \le m\le 10^9\)。

由于答案具有对称性,任意 \(S_i\) 的贡献等于 \(S_1\),接下来我们只需要讨论 \(S_1\)。下文中简记 \(B_{1, i}\) 为 \(B_i\)。

我们令 \(k\) 为一种可能中满足前 \(i\) 个元素彼此不同的最大的 \(i\),随后来分别对确定的 \(k\) 计数种类数。

我们已经确定了 \(B_1 = 1\),这样就需要从 \(n-1\) 个彼此不同的元素中选 \(k-1\) 个,也就有 \(A(n-1, k-1)\) 种可能性。关注 \(B_{k + 1}\),可以发现其必定与前 \(k\) 个中的一个元素相同。假设 \(B_p = B_{k + 1} (1\le p \le k)\),则我们可以发现,\(B_p\) 到 \(B_k\) 的子序列定会无限循环下去。
因此,只有 \(B_1\) 到 \(B_{p-1}\) 对应的子序列是只在 \(B\) 中出现一次的序列,对答案的贡献即为 \(p-1\)。对所有可能的子序列贡献求和得到这一部分对答案的贡献 \(\sum_{p=1}^k (p - 1) = p(p-1)/2\)。

现在固定 \(B_1\) 到 \(B_{k + 1}\) 段的序列,考虑有多少 \(A\) 满足当前的条件。由于 \(B_i\) 固定等价于 \(A_{B_{i-1}}\) 被确定,可以发现 \(A_{B_1}, A_{B_2}, \dots, A_{B_k}\) 都是已经确定了的,因此 \(A\) 中没有确定的元素还有 \(n - k\) 个。
因此对 \(k\) 的答案即为

\[A(n-1, k-1)\times n^{n-k}\times \frac{p(p-1)}2 \]

对 \(1\le k\le n\) 求和即可得到 \(S_1\)。总时间复杂度 \(O(n)\)。

Submission.

标签:infty,le,frac,ix,闲话,sum,23.1,序列
From: https://www.cnblogs.com/joke3579/p/chitchat230108.html

相关文章

  • 力扣每日一题2023.1.8---2185. 统计包含给定前缀的字符串
    最近力扣好像经常鸽,感觉得找点时间补一补了,毕竟算法现在学的还是太辣鸡了。 给你一个字符串数组words和一个字符串pref。返回words中以pref作为前缀的字符串......
  • 最完美WIN11_Pro_22H2.22623.1095软件选装纯净版VIP38.4
    【系统简介】=============================================================1.本次更新母盘来UUP_WIN11_Pro_22H2.22623.1095。进一步优化调整。2.不支持更新,更新后精简版......
  • 2023.1.7(Atcoder Beginner Contest 284)
    A.HappyNewYear2023Linkhttps://atcoder.jp/contests/abc284/tasks/abc284_dStatement将给定的\(N\)分解成\(N=p^2\cdotq\)的形式,其中\(p,q\)为两个不......
  • 三目运算符——the fifteenth——2023.1.6
    三目运算符表达式1?表达式2:表达式3;意思是:先执行表达式1,如果表达式1的结果为真,则执行表达式2,结果就是表达式2的结果;如果表达式1的结果为假,则执行表达式3,结果为表达3的结......
  • 闲话 23.1.7
    闲话数学这里证明是个避不过去的东西。你总得面对他。——巨佬今日ABC(先写一点慢慢补上拉格朗日插值熟知平面上\(n+1\)个点对应着一个\(n\)次多项式的系......
  • 2023.1.7 DP 学习日志
    上午编辑距离(AcWing.899)思路:同最短编辑距离,只不过要做\(m\)次。code:#include<bits/stdc++.h>#definelllonglong#defineN1005usingnamespacestd;inlinel......
  • 2023.1.7学习笔记
    、经典类与新式类经典类:​不继承object的类或者其子类的类新式类:​继承object或者其之类的类​在python3中,只有新式类,所有类都默认继承object​在python2中,区......
  • 力扣每日一题2023.1.6---2180. 统计各位数字之和为偶数的整数个数
    给你一个正整数num,请你统计并返回小于或等于num且各位数字之和为偶数的正整数的数目。正整数的各位数字之和是其所有位上的对应数字相加的结果。示例1:输入:num=......
  • 2023.1.6 (Codeforces Round #842 (Div. 2))
    A.GreatestConvexLinkhttps://codeforces.com/contest/1768/problem/ADescription求出最大的\(x(1\leqx<k)\),使得\(x!+(x-1)!\)是\(k\)的倍数。Soluti......
  • 2023.1.6
    搜索了某些学校的心理学培养方案,并没有找到相应的课本和参考教材。有几个可以参考下:【资料整理】如何看到国内外各大学的课表、课程大纲,https://zhuanlan.zhihu.com/p/4......