完成情况:
Restore Sequence(11.8)
Magical Candy Store(11.8)
Scalar Product Tree(11.9)
Unusual Queries(11.9)
Chef and the Combination Lock(11.10)
Red-Black Boolean Expression(11.9)
Panic! at the Disco(11.13)
Selecting Edges(未做)
Connect on a Grid (Challenge)(未做)
题解赛后发
挑几题讲一下
Scalar Product Tree
这是本次比赛我最喜欢的一题,说不上来为什么,可能代码比较容易写?
设阈值(S),钦定(x),若我们预处理:深度在(dep_x=dep_yequiv x(mod~S))的所有点对,复杂度为(O(Scdot 点对+qS))
选择点对数最小的层(x),复杂度为(O(S(frac{n}{S})^2+qS)),由于(n,q)同阶,令(S=sqrt{n}),总复杂度(O(nsqrt{n}))
code
Chef and the Combination Lock
先写一下我自己的垃圾做法:
令(m=min{frac{a_i}{2}})
(Ans=frac{1}{prodlimits_{i=1}^n(a_i+1)} sumlimits_{i=1}^m prodlimits_{j=1}^n(a_j-2i-1))
对于(Ans=frac{1}{prodlimits_{i=1}^n(a_i+1)}sumlimits_{x=1}^m F(x))(其中(F(x)=prodlimits_{i=1}^n(a_i-2x-1)))
可以发现(Ans)是关于(m)的(n+1)次多项式,对于(m'=[0,n+1]),可以通过分治fft,然后把多项式插出来
code
官方题解:
把上面做法的(F(x))系数求出来:令(F(x)=sumlimits_{i=0}^n f_ix^i)
(egin{aligned}
sumlimits_{x=1}^m F(x)&=sumlimits_{x=1}^m sumlimits_{j=0}^n f_jx^j\
&=sumlimits_{i=0}^n f_i(sumlimits_{x=1}^m x^i)\
end{aligned})
令(g_i=sumlimits_{x=1}^m x^i),写成egf的形式:(G(x)=sumlimits_{i=0}^{infty}g_ifrac{x^i}{i!})
通过简单的推导可以得到(G(x)=frac{e^{(m+1)x-e^x}}{e^x-1}),做一次多项式求逆得到(g_i(iin[0,n]))
Panic! at the Disco
感谢emofunc学长:在比赛时,由于对扩域不熟悉,耐心地教我如何运算,还帮助我优化了很多常数
通过简单的推导,我们将问题转化为:
给定(K imes K)的矩阵(A)即(N),求(sumlimits_{i=0}^N A^i(mod~998244353))((Kle 100,Nle 10^{1000}),矩阵的元素为(a+bsqrt{5}))
(O(K^3))找到特征多项式(f(x)),然后就是算(sumlimits_{i=0}^N x^i~mod~f(x)),可以通过对(N)倍增算出
(O(K^3+K^3logN+K^3))
code
Selecting Edges
不会做,神wasa855教的
可以发现选的一定是若干个菊花
然后随机成一个二分图跑网络流
正确率是1/2^k