我裂开了呀,三道题全是数学题。
你让我这个数学菜鸡怎么活。
由于这几道题这个菜鸡都看不懂,所以就把题解都搬过来了。
T1 数字
题目内容
给定 (n,p) 以及长度为 (p-1) 的数列 (a_0,a_1,cdots,a_{p-2}),其中 (p) 是个质数。你需要求出:
(displaystylesum_{i=1}^na_{imod (p-1)}cdotvarphi(i) mod p)
其中 (varphi) 是欧拉函数,即 (varphi(i)) 表示小于等于 (i) 且与 (i) 互质的正整数个数,(p) 给定,且 (p) 是个小质数,满足 (2 le p le 23)。
总共会给定 (T) 组数列 (a_i),你需要对于它们分别算出答案。
注意常数对于程序运行时间的影响,尽量减少取模运算,预处理两个数乘法取模的结果可以大幅度加快运算。
数据范围:(1 le n le 10^9,1 le T le 10^4,0 le a_i < p,2 le p le 23) 且 (p) 是质数
solution
数论数学+单位根反演。
先考虑单位根反演一下:
(displaystylesum_{i=1}^{n} a_{i ext{mod} (p-1)} imes varphi(i))
(=displaystylesum_{i=0}^{p-2}a_isum_{j=1}^{n} [j equiv ipmod {p-1}] varphi(j))
(=displaystyle {1over p-1}sum_{i=0}^{p-2}a_isum_{j=1}^{n}varphi(j) imes sum_{k=0}^{p-2} w_{p-1}^{k(j-i)})
(displaystyle ={1over p-1}sum_{i=0}^{p-2}a_i sum_{k=0}^{p-2}w_{p-1}^{-ki} sum_{j=1}^{n} varphi(j) imes w_{p-1}^{kj})
然后对于每一个 (b=0...p-2) 要求出:(sum_{j=1}^{n} varphi(j) imes (w_{p-1}^k)^j)
设:(S(n,k) = displaystylesum_{j=1}^{n}varphi(j) imes k^j)
(displaystyle S(n,k) = sum_{i=1}^{n}k^i(i-sum_{jmid i,j<i} varphi(j) = sum_{i=1}^{n} k^ii-sum_{d=2}^{n}sum_{j=1}^{nover d} varphi(j)-k^{dj} = sum_{i=1}^{n}k^ii-sum_{d=2}^{n}S({nover d},k^d)) 。
数论分块时需要计算类似于 ([l,r]) 中每个 (k^d mod p) 出现了多少次。由于 (k^d mod p) 是以 (p-1) 为循环节的,因此可以 (O(p)) 算出,复杂度 (O(n^{2over 3}p^2))。
但是注意到长度小于 (p) 的段没必要 (O(p)) 统计,暴力即可。而长度 (>= l) 的段个数是 (O(sqrt{nover l})) 的,因此总复杂度为 (O(n^{2over 3}p^{3 over 2}))
T2 糖果
题意描述
有 (n) 箱糖果,其中第 (i) 箱里有 (a_i) 堆糖果,每堆糖果都有 (2_i) 个,如果拿了 (k) 个,得到的快乐值为 (displaystyle sum_{j=max(k,i)}^{2i}(-1)^{j-k}inom jkinom{i}{j-i}-[k=0])。其中 ([k=0]) 表示当 (k=0) 时值为 (1),否则为 (0)。最终可以从每箱中的每堆里面各拿出一些糖果放在一起,得到的快乐值为每堆糖果的快乐值的乘积(注意可以是负数)。例如 (n=2,a_1=a_2=1),从第一堆里拿 (0) 个,第二堆里拿 (3) 个,获得的快乐值为 ((-1) imes(-2)=2)。
对于每一种拿法,你都需要把这些糖果分给 (m) 个小朋友,小朋友可以不分到糖果,但是 (m) 个糖果必须分完。
你需要算出所有方案下,快乐值的总和是多少。两种方案不同当且仅当从某堆里拿出的糖果数量不同,或者某个小朋友分到的糖果数量不同。小朋友都是有区别的,糖果是没有区别的。
由于答案很大,你只需要输出快乐值总和 (mod 99824435) 的结果即可。
数据范围:(1 le n,m le 10^5,0 le a_i < 998244353)
solution
数论数学+期望+多项式。
设第 (i) 箱没推糖果的 (OGF) 为 (F_i), 则相当于求:
(displaystyle sum_{i}{(i+m-1choose m-1)}[x^i]prod_{j=1}^{n}F_{j}^{a_i})
把组合数写成关于 (i) 的下降幂多项式,不难发现只需要算右边算式的 (0sim m-1) 解导数的系数和。余数只需要求出每个 (F) 的高阶导的 (EGF) 即可。
(displaystyle sum_{j=k}^{2^i}j^{underline k} sum_{l=max(j,i)}^{2i}(-1)^{l-j}{lchoose j}{ichoose l-i}-[j=0])
(=displaystyle k!sum_{l=i}^{2i}{ichoose l-i}sum_{j=k}^{l}(-1)^{l-j}{jchoose k}{lchoose j}-[k=0])
(displaystyle =k!sum_{l=i}^{2i}{ichoose l-i}{lchoose k}sum_{j=k}^{l}(-1)^{l-j}{l-kchoose j-l}-[k=0])
注意到后面的求和符号不为 (0), 当且仅当 (l=k), 因此值为:
([kgeq i]k!{ichoose k-i}-[k=0])
因此 (EGF) 恰好为 (x^i(x+1)^i-1), 于是我们就相当于计算下式的前 (m) 项:
(displaystyle prod_{i=1}^{n}(x^i(x+1)^i-1)^{a_i}=(-1)^{sum a_i}prod_{i-1}^{n}(1-x^i(x+1)^i)^{a_i})
令 (y=x^2+x),即算:
(displaystyle prod_{i=1}^{n}(1-y_i)^{a_i}=exp(-sum_{i=1}^{m}a_isum_{j=1}^{m}{y^{ij}over j}))
于是得到了关于 (y) 的多项式 (P(y)), 由于 (y=x^2+x=(x+{1over 2})^2-{1over 4}), 于是令 (z=x+{1over 2}), 我们可以先计算 (Q(z^2) = P(z^2-{1over 4})), 在平移一步及可得到关于 (x) 的多项式。
复杂度:(O(nlogn)) 。
T3 星星
题目内容
三维空间里有一些星星,第 (i) 颗星星的坐标为 ((x_i,y_i,z_i)),且有 (p_i) 的概率发光,(1-p_i) 的概率不发光。保证任意四颗星星不在同一个平面上。
称一个星星是美丽的,当且仅当他是发光的,且不存在另外四颗发光的星星,使得这颗星星被严格包含在这另外四颗星星形成的三棱锥中。你需要求出期望有多少星星是美丽的。
为了避免精度问题,你需要输出这个期望对 (998244353) 取模的结果。
数据范围:(4 le n le 100,0 le x_i,y_i,z_i le 10^5),保证不会有四点共面的情况。
solution
计算几何+期望。
不难发现,我们求的其实是期望三维凸包的大小。
暴力枚举哪些点出现,注意我们只需要预处理 (f(S)) 表示有哪些点不会被 (S) 中的三棱锥包含,注意只有 (|S|<=4) 的时候才需要暴力判断,剩下的时候取所有子集的交即可。于是复杂度 (O(2^n n))。
当然抄模板每次建出三维凸包也可以做到 (O(2^n n^2))。
注意到欧拉公式 (V-E+F=2),我们只需要计算 (E,F) 的期望即可。
因此复杂度 (O(n^4)),注意讨论只有小于等于三个点出现的情况。