今年是2020年!今年是2020年!今年是2020年!2020果然不简单——
疫情在家,线上文化课当然要好好搞,当然要好好管理时间了:
觉得难度还算低?
有点紧张,扫完三题题意,
先定性:T1—阅读理解题;T2—公式推导题;T3—以线性基为基础的神仙题?
感觉T2比较和谐,,,先推推T2……无果。
再康康T1,要卡常?码着先—调试许久。
赶紧把后两题暴力打了—T3暴力花了不少时间。
然后就放弃了后两题,优化T1。。。
结果:T1没检查做法,求最大时间时出现大BUG,杂度巨大。。人人切的T2我,,害。T3花那么多时间水到10分还不如刚前两题。
~~水题。~~打倒多人的烦题。
几个要注意的地方:
要求这个式子:
( ∑ k = 0 n f ( k ) × x k × ( n k ) ) m o d p \Large (\sum_{k=0}^nf(k)\times x^k\times \dbinom{n}{k} )\bmod p (k=0∑nf(k)×xk×(kn))modp
其中:
f ( x ) = ∑ i = 0 m a i × x i \large f(x)=\sum_{i=0}^{m}a_i\times x^i f(x)=i=0∑mai×xi
显然要把这个m次多项式的各项贡献分别算,考虑计算:
A i = ( ∑ k = 0 n k i × x k × ( n k ) ) m o d p \Large A_i=(\sum_{k=0}^nk^i\times x^k\times \dbinom{n}{k} )\bmod p Ai=(k=0∑nki×xk×(kn))modp
暴力。
部分分m=0—根据组合意义简化:
A n s ≡ a 0 × ( ∑ k = 0 n x k × ( n k ) ) ≡ a 0 × ( x + 1 ) n \large Ans\equiv a_0\times (\sum_{k=0}^nx^k\times \dbinom{n}{k} )\\ \large \equiv a_0\times (x+1)^{n} Ans≡a0×(k=0∑nxk×(kn))≡a0×(x+1)n
A_i的简化似乎比较麻烦,某位大佬指点,可以尝试把普通多项式 f 变为 下降幂多项式 g:
g ( x ) = ∑ i = 0 m b i × x i ‾ \large g(x)=\sum_{i=0}^{m}b_i\times x^{\underline{i}} g(x)=i=0∑mbi×xi
改写A:
B i ≡ ∑ k = 0 n k i ‾ × x k × ( n k ) ≡ ∑ k = 0 n k ! ( k − i ) ! × x k × n ! k ! × ( n − k ) ! ≡ n i ‾ ∑ k = 0 n x k × ( n − i n − k ) ≡ n i ‾ ∑ j = 0 n − i x j + i × ( n − i j ) ≡ n i ‾ x i ∑ j = 0 n − i x j × ( n − i j ) ≡ n i ‾ x i ( x + 1 ) n − i \Large B_i\equiv \sum_{k=0}^n k^{\underline{i}} \times x^k \times \dbinom{n}{k}\\ \Large \equiv \sum_{k=0}^{n} \frac{k!}{(k-i)!} \times x^k \times \frac{n!}{k!\times (n-k)!}\\ \Large \equiv n^{\underline{i}} \sum_{k=0}^{n} x^k\times \dbinom{n-i}{n-k}\\ \Large \equiv n^{\underline{i}} \sum_{j=0}^{n-i} x^{j+i}\times \dbinom{n-i}{j}\\ \Large \equiv n^{\underline{i}} x^i \sum_{j=0}^{n-i} x^j\times \dbinom{n-i}{j}\\ \Large \equiv n^{\underline{i}} x^i(x+1)^{n-i} Bi≡k=0∑nki×xk×(kn)≡k=0∑n(k−i)!k!×xk×k!×(n−k)!n!≡nik=0∑nxk×(n−kn−i)≡nij=0∑n−ixj+i×(jn−i)≡nixij=0∑n−ixj×(jn−i)≡nixi(x+1)n−i
这里复杂度O(1)!!!接下来只要求出m+1个b就行了。
x的n次下降幂显然为一个n次多项式。
因此有:
b m = a m \Large b_m=a_m\\ bm=am
设:
F m = f F i − 1 = F i − b i × x i ‾ , i = 1 , 2 , . . . , m \Large F_m=f \\ \Large F_{i-1}=F_i-b_i \times x^{\underline{i}}~~,i=1,2,...,m Fm=fFi−1=Fi−bi×xi ,i=1,2,...,m
则:
b i = F i [ x i ] \Large b_i=F_i[x^{i}]\\ bi=Fi[xi]
这里复杂度O(m^2)
利用线性基转化为保序回归问题。
还不会。。
听到大佬们疯狂嘲讽Day1,鼓起多拿些分的勇气。
虽然又炸分了,但仍比Day1高分。
T1没怎么想—十分可惜,T2秒切(调得久),T3 50部分分显然。
主要问题:时间控制不当,代码实现能力有待提高。
显然状压。大概是因为想复杂了,竟然没想到。。
对树上每个节点的val求和:
v a l ( x ) = ⨁ y 在 x 的 子 树 中 ( d i s x , y + v y ) \Large val(x)=\bigoplus_{y在x的子树中}(dis_{x,y}+v_y) val(x)=y在x的子树中⨁(disx,y+vy)
显然要把每个二进制位的贡献分开算—把位运算变为四则运算:
A n s i = ∑ x v a l i ( x ) m o d 2 \Large Ans_i=\sum_{x}val_i(x) \bmod 2 Ansi=x∑vali(x)mod2
发现每个点对 其到根的链上的点 的贡献是周期性的0/1变化,容易想到用差分解决。
套路+套路。
求:
A n s = ∑ T v a l ( T ) = ∑ T ( ∑ i = 1 n − 1 w e i ) × ( w e 1 , w e 2 , . . . , w e n − 1 ) \Large Ans=\sum_{T}val(T)=\sum_{T} (\sum_{i=1}^{n-1} w_{e_{i}})\times(w_{e_1},w_{e_2},...,w_{e_{n-1}}) Ans=T∑val(T)=T∑(i=1∑n−1wei)×(we1,we2,...,wen−1)
gcd部分的拆解套路:
I ∗ ϕ = i d ( a 1 , a 2 , . . . , a n ) = ∑ ∀ a i , d ∣ a i ϕ ( d ) \Large I*\phi=id \\ \Large (a_1,a_2,...,a_{n})=\sum_{\forall a_i,d|a_i}\phi(d) I∗ϕ=id(a1,a2,...,an)=∀ai,d∣ai∑ϕ(d)
接下来就变成:
A n s = ∑ d = 1 w m a x ϕ ( d ) ∑ T , 其 中 d ∣ w e i ∑ i = 1 n − 1 w e i \Large Ans=\sum_{d=1}^{w_{max}} \phi(d)\sum_{T,其中d|w_{e_{i}}}\sum_{i=1}^{n-1} w_{e_{i}} Ans=d=1∑wmaxϕ(d)T,其中d∣wei∑i=1∑n−1wei
接下来要解决的是快速计算生成树边权和。
容易想到,我们的Matrix-tree Theorem,它能解决的是生成树边权积。拿到50部分分——
然而考场只检查了矩阵树部分,没检查暴力部分,只拿了25分。。
根据巨佬们指点,我们可以把边权定为(wx+1)再做矩阵树,得到的多项式的一次项即为边权和——“妙啊!!!”
是金子总会发光的!
定 奋力向前奔跑,不负大好青春!