[contest] 517 三月 月赛
A.维多利加挖水井
题意:有\(n\)个井中挖共\(m\)米,每个井挖\(x\)米,所需要的代价是\(ax^3+bx^2+cx\),给定每个井的\(a, b, c\)系数,求最小代价。
数据范围:\(n, m\leq 10^5\)算法:优先队列/线段树
题解:因为\(m \leq 10^5\),所以我们可以通过算每一米用哪一个井挖,算出最小代价,那么显然,对于当前的一米,必然选择挖一米代价最小的井,我们可以维护当前所有井挖一米的代价,然后单点修改就行。
时间复杂度:\(\Theta(m \log n)\)
B. 最长链
题意:给定一个\(n\)个点的树,然后给定一个\((u, v, w)\),求如何排列这个三元组,使得\((x, y, z)\),从\(x \to z\)和\(y \to z\)的路径交点最多。
数据范围:\(n, m \leq 10^5\)
算法:\(\text{LCA}\)
题解:这里讲两种做法。
一种是树剖求\(\text{lca}\)。
我们考虑先对\(x\to z\)的路径区间加\(1\)。
然后在查询\(y \to z\)的路径和。
这个和即为路径交点数。
然后再\(x \to z\)的路径区间\(-1\)
二是倍增求\(\text{lca}\)。
我们考虑如何求\((a, b, c)\)中\(a \to c\)和\(b \to c\)的路径交点数。
那么他们的交点数为\(dis(a,c)+dis(b,c) - dis(a, b)\)
我们只需要枚举终点就行。
时间复杂度:\(\Theta(m \log n)\)
C. color
题意:有一个\(n*n\)的矩阵,每次可以选择两个集合\(A, B\),\(A \cap B = \emptyset\),我们可以选择\(x \in A\)和\(y \in B\),将\(A, B\)中所有的\((x, y)\)染上颜色,请你构造一个方案,用至多\(20\)次,将矩阵除了对角线涂满。
数据范围:\(n \leq 10^3\)
算法:构造
题解:如果我们不考虑次数的话,那么我们有一个需要\(n\)步的方法,那么就是\(A={i},B={x|x \in N^+且x !=i}\)
说明我们需要这个集合对于任意一个\(x \in [1,n],x \in Z\),需要对应的另外一个集合有\(y \in [1, n], x\in Z且y != x\)。
那么我们可以进行二进制拆分,第\(i\)此操作,我们将第\(i\)位为\(1\)的放入\(A\),再将第\(i\)位为\(0\)的放入\(B\),那么我们考虑任意的\(x \in [1,n],x \in Z\),与他不同的数字(二进制上至少有一位不同),必定放在了另外一个集合里。正确性即可以证明。
时间复杂度:\(\Theta(n \log n)\)
D. Tiat and random
题意:给定\(k\)个白点,我们有\(\frac{1}{2}\)的概率将他染为黑色,求黑色与白色相差数量的绝对值的平均值。答案对\(2000003\)取模。
数据范围:\(n,k \leq 2000000\)
算法:期望,数学,递推。
题解:我们可以考虑 白球的个数为\(k\),那么黑球的个数为\(n-k\), 那么黑球白球的差值就是\(|n-2k|\),再考虑出现白球为\(k\)的情况,那么就是\(\binom{n}{k}\)种情况,然后就是推式子了。
\(\sum_{k=0}^n|n-2k|\binom{n}{k}\)
\(=\sum_{k=0}^{\lfloor \frac{n}{2} \rfloor} (n-2k)\binom {n}{k}+\sum_{k=\lfloor \frac{n}{2} \rfloor+1}^n(2k-n)\binom{n}{k}\)
\(=n\sum_{k=0}^{\lfloor \frac{n}{2} \rfloor}\binom{n}{k}-2\sum_{k=1}^{\lfloor \frac{n}{2} \rfloor} k\binom {n}{k}+2\sum_{k=\lfloor \frac{n}{2}\rfloor+1}^nk\binom{n}{k}-n\sum_{k=\lfloor \frac{n}{2}\rfloor+1}^n\binom{n}{k}\)
由于\(k\binom{n}{k}=n\binom{n-1}{k-1}\)
原式\(=n\sum_{k=0}^{\lfloor \frac{n}{2} \rfloor}\binom{n}{k}-2n\sum_{k=1}^{\lfloor \frac{n}{2} \rfloor} \binom {n-1}{k-1}+2n\sum_{k=\lfloor \frac{n}{2}\rfloor+1}^n\binom{n-1}{k-1}-n\sum_{k=\lfloor \frac{n}{2}\rfloor+1}^n\binom{n}{k}\)
\(=n\sum_{k=0}^{\lfloor \frac{n}{2} \rfloor}\binom{n}{k}-n\sum_{k=0}^{k=n-\lfloor \frac{n}{2}\rfloor-1}\binom{n}{n-k}+2n\sum_{k=1}^{n-\lfloor \frac{n}{2}\rfloor+1}\binom{n-1}{n-k}-2n\sum_{k=1}^{\lfloor \frac{n}{2} \rfloor} \binom {n-1}{k-1}\)
\(\text{if (2 | n) Then}\)
\(=n\sum_{k=0}^{\frac{n}{2}}\binom{n}{k}-n\sum_{k=0}^{k=\frac{n}{2}-1}\binom{n}{n-k}+2n\sum_{k=1}^{\frac{n}{2}}\binom{n-1}{n-k}-2n\sum_{k=1}^{\frac{n}{2} } \binom {n-1}{k-1}\)
\(=n\binom{n}{\frac{n}{2}}\)
\(n \bmod 2 =1\)跟上种情况差不多,就不推了。
时间复杂度:\(\Theta(T+n)\)