CF622(EDU7) 题解 / 拉格朗日插值学习笔记
:::info[说些闲话]
试用新科技。
:::
A. Infinite Sequence:
:::info[题目基本信息]
考察:数学。
题目简述:
小 X 拿到了一个序列
他想求
数据范围:
-
1\le n\le 10^{14} ::: 这个序列形为
1,1,2,1,2,3,1,2,3,4,1,2,3,4,5\cdots ,容易发现i 第一次出现是在第\displaystyle\frac{(i+1)i}{2} 位,所以枚举在1 到n 位出现的最大的数,根据上述输出值。
时间复杂度为\Theta(\sqrt n) ,空间复杂度为\Theta(1) 。B. The Time:
:::info[题目基本信息] 考察:模拟。
题目简述:
小 K 看表得到了一个24 小时制的时间,他想知道a 分钟后是什么时间,由于强迫症,时间要以hh:mm的方式输入输出。
数据范围: -
1\le a\le 10^4 ::: 我们可以一分钟一分钟的往后推,先在最低位加
1 ,然后不断进位即可。
时间复杂度为\Theta(a) ,空间复杂度为\Theta(1) 。C. Not Equal on a Segment:
:::info[题目基本信息] 考察:STL。
题目简述:
小 I 收到了一个序列\{a_n\} ,他有m 次询问,第i 次询问在区间[l_i,r_i] 内是否存在一个p_i 满足a_{p_i}\ne x_i ,若存在给出任意一个p_i ,不存在输出-1 。
数据范围: -
1\le n,m\le 2\times 10^5 -
\forall i\in[1,n]\cap\mathbb Z,1\le a_i\le 10^6 -
\forall i\in[1,m]\cap\mathbb Z,1\le l_i\le r_i\le n,1\le x_i\le 10^6 ::: 如果在
\forall i\in[1,m]\cap\mathbb Z,j\in[l_i,r_i]\cap\mathbb Z,a_j=x_i ,那么: -
a_{l_i}=x_i -
\forall j\in(l_i.r_i]\cap\mathbb Z,a_j=a_{j-1}
那么我们把所有的 set 里,按照上面两个条件模拟判断即可。
时间复杂度为
D. Optimal Number Permutation:
:::info[题目基本信息]
考察:构造,数学。
题目简述:
小 A 拿到了一个数
定义
数据范围:
-
1\le n\le 5\times 10^5 ::: 结论题。
结论: - 存在方案使得
s=0 。
:::info[证明:]
由于
证毕。
:::
时间复杂度为
E. Ants in Leaves:
:::info[题目基本信息]
考察:贪心。
题目简述:
小 L 收到了一棵有
数据范围:
-
2\le n\le 5\times 10^5 ::: 注意到根节点的各个儿子节点的子树相互独立,故我们可以将所有儿子的子树的答案取最大值。
向上爬的过程实际就是深度减1 的过程,由于深度相同的蚂蚁早晚会相遇,所以我们可以将其中一个深度加1 ,所以我们将所有叶子的深度升序排序,然后dep_i\leftarrow\max(dep_i,dep_{i-1}+1) 即可。
时间复杂度为\Theta(n\log n) ,空间复杂度为\Theta(n) 。F. The Sum of the k-th Powers:
:::info[题目基本信息] 考察:拉格朗日插值。
题目简述:
小 Z 拿到了两个数n,k ,他想求:(\sum_{i=1}^ni^k)\bmod(10^9+7) 数据范围:
-
1\le n\le 10^9 -
0\le k\le 10^6 ::: ::::success[拉格朗日插值简介] 已知一个
n 次多项式的图象过n+1 个点,第i 个点为(x_i,y_i) ,显然答案唯一。 :::info[答案唯一性] 列一个n+1 元一次方程组易证。
::: 构造的多项式为\displaystyle f(x)=\sum_{i=1}^{n+1}y_i\prod_{j\in[1,n+1]\cap\mathbb Z,j\ne i}\frac{x-x_j}{x_i-x_j} ,将值带入发现正确性显然。
一般地,该式时间复杂度为\Theta(n^2) 。
:::: 结论:\displaystyle f(n)=\sum_{i=1}^ni^k 是一个k+1 次多项式。 :::::success[证明(默的)] 构造一个序列S 为\{f(1),f(2),\cdots,f(n)\} 。 定义序列A 的一阶差分序列\Delta A 为\{A_2-A_1,A_3-A_2,\cdots,A_{|A|}-A_{|A|-1}\} ,它的x (x\ge 2 )阶差分序列\Delta^xA 为它的x-1 阶差分序列的1 阶差分序列。 若序列A 中数字都相等,则序列A 为0 阶等差序列,若序列A 的x 阶差分序列为0 阶等差序列,则它是一个x 阶等差序列。
结论: - 若序列
S 为x 阶等差序列,则序列的通项A 为一个x 次多项式。 - 上一条的逆命题。
::::success[证明]
设序列
显然序列
由上述可得:
所以它的一阶差分序列为一个
逆命题反推即可。
证毕。
::::
显然,序列
证毕。
:::::
好的终于证完了,但是目前时间复杂度为
取
那么让我们来推式子吧:
现在式子上所有东西都能用快速幂和前缀和维护了,模数
时间复杂度为