2021 CCPC 威海站
题目链接
题解
A. Goodbye, Ziyin!
签到题,二叉树必须满足每个点的度数 $\le 3$,且根节点度数 $\le 2$,判断一下即可。
C. Assign or Multiply
题意
给定 $m$ 个操作,每个操作形如给 $x$ 赋值给 $a_i$,或给 $x$ 乘上 $a_i$。
任意安排这些操作的顺序,问有多少个 $i$ 满足 $i\in[0,p-1]$ 使得不存在某种操作顺序,使 $x\bmod p$ 最终值为 $i$。
$x$ 的初始值为 $1$。
$m\le10^6,3\le p\le 2\times 10^5,p\in \mathbb{P}$
题解
因为有赋值操作,那么相当于在赋值操作中选择一个,然后在乘法操作中选择若干个,问最后的值可以是多少。(注意,如果没有赋值操作,那么直接输出 $p-1$。)
由于 $p$ 为奇质数,我们求出它的原根 $g$,将乘法转化为加法。
考场中想到用bitset,但是应该是过不了的。
考虑每次操作,相当于找到所有 $bit_i=1,bit_{(i+x)\bmod p}=0$ 的 $i$,并把 $bit_{(i+x)\bmod p}$ 设为 $1$。
考虑 $i$ 向 $(i+x)\bmod p$ 连边,这样就形成了若干个环,环中 $1->0$ 和 $0->1$ 的个数显然是相等的。也就是说,如果能快速找到所有的 $bit_i\neq bit_{(i+x)\bmod p}$ 就可以了。
从小到大枚举,二分+树状数组找到第一个 $i$ 即可,此处可以用哈希判断一下。
时间复杂度 $O(n\log ^2q)$。
D. Period
周期与border是等价的,枚举原串的border,假设长度为 $i$,那么 $[i+1,n-i]$ 中都可以产生 $1$ 的贡献。
kmp,然后差分一下即可。
E. CHASE!
设 $f_i$ 表示最多选择 $i$ 次的期望。
设当且选出来的和为 $X$,若 $X\geq f_{i-1}$ 时不重新选,否则重新选。
则有:$f_i=E(X>\lfloor f_{i-1}\rfloor)+f_{i-1}P(X\le \lfloor f_{i-1}\rfloor )$
计算 $E,P$ 可用ntt预处理,也可暴力two-pointer计算。
F. Stone
神仙题。
考虑如果出现了奇数,那么先手将 $s$ 取奇数,将所有的奇数变成偶数。这样就赢了,且赢的方案数为(最小的奇数+1)/2。
否则,如果全是偶数,且 $s$ 为奇数,那么先手必败。因此 $s$ 必须为偶数,那么 $a_i$ 全都除去 $2$,就又变回来原来的问题了。
G. Desserts
就因为在这道题上自己的失误错失Au…
给定 $n$ 个数 $a_i$,满足 $\sum_{i=1}^na_i\le 10^5$。记 $f(x)=\prod_{i=1}^n\binom{a_i}{x}$,对于 $i\in [1,m]$,求 $f(i)$。
一开始就直接开始莽多点求值,结果发现旁边的人过了才反应过来。
分块,对于小于等于 $\sqrt{10^5}$ 的记录有多少个,对于大于 $\sqrt{10^5}$ 的直接暴力枚举即可。
时间复杂度 $O(n\sqrt{n})$。
H. city safety
套用最大权闭合子图的套路,先全选,然后建出图求最小割即可。
用前缀和的思想,可以将边数优化到 $O(n^2)$ 级别。
I. Distance
显然可以对每个质数分开来统计:
我们枚举质数 $p$,其贡献为:$2\times p\sum_{p^c\le n}\lfloor \frac{n}{p^c}\rfloor(n-\lfloor \frac{n}{p^c}\rfloor)$。乘 $2$ 是因为不妨假设的 $i$ 中 $p$ 的次数比 $j$ 小。
对于 $c\geq 2$ 的情况,显然有 $p\le \sqrt{n}$,暴力枚举 $\sqrt{n}$ 以内质数即可。
对于 $c=1$,其对答案贡献经过整除分块后,需要计算 $\frac{n}{i}$ 以内的质数的和。这显然是Min25筛的前一部分。
时间复杂度 $O(\frac{n^{\frac{3}{4}}}{\log n})$。
1 | const int N=2e6+5; |
J. Circular Billiard Table
签到题,算一算gcd即可。
K. Tiny Stars
考虑 $i->\frac{a}{i}->i$,但是这样的花费是 $16n$ 的,行不通。
考虑减少一点 $i->\frac{a}{i}$,可以发现:$i->\frac{a}{i}->\frac{1}{i}->ai->i$。
此时的花费为 $4n+\frac{(14+1)n}{2}=11.5n$,可以通过。
那么怎么能在不知道 $a$ 的情况下顺利连成上述情况呢?
考虑原根,将乘除转化为加减,设 $g^t=a$,有 $g^i->g^{t-i}->g^{n-1-i}$。
易知 $i,n-1-i$ 同奇偶,那么只要 $i$ 与 $t-i$ 不同奇偶性就可以了。
即 $t$ 为奇数,显然有 $\frac{1}{2}$ 的概率可以成功。
M. 810975
容斥,考虑算出 $\le k$ 的答案即可。
考虑 $n-m$ 个 $0$ 将线段分成 $n-m+1$ 段,每一段的长度不超过 $k$。总和为 $m$,那么相当于求 $x_1+x_2+\cdots+x_{n-m+1}=m,x_i\in [0,k]$ 的方案数。
两种办法:
- 考虑生成函数,即求 $x^m^{n-m+1}$。用快速幂或者等比数列求和。
- 容斥,考虑至少 $i$ 个 $x$ 违反了 $[0,k]$ 的限制即可。