课堂笔记 2024/5/19 (Easy Round)
四元组计数
题目描述:
问 \(i<j<k<l\) 且 \(a_i=a_k,a_j=a_l\) 的 \(i,j,k,l\) 的个数。
做法:
枚举 \(j,k\),预处理做完了。
Count The Blocks
有 \(n\) 位数(可能有前导 \(0\))。
对于 \(1\le i\le n\),问长为 \(i\) 的极长连续段数。
做法:
枚举 \(i\)。
显然有 \(n-i-1\) 个非端点连续段,每个连续段有 \(810\) 种方案(两端每个 \(9\) 种,本身取值 \(10\) 种)。
端点连续段有 \(90\) 种取值。
剩下的不受影响。
最终答案为 \((n-i-1) \times 180 \times 10^{\max(0,(n-i-2))} + 180 \times 10^{\max(0,(n-i-1))}\)。
特判 \(i=n\) 的情况,答案为 \(10\)。
路径计数
\(n\) 个点的 dag。\(m\) 次询问,每次给定 \(k\) 个关键点。
问 \(s\rightarrow t\) 且不经过关键点的方案数。
做法:
记 \(a_{i,j}\) 表示从 \(i\rightarrow j\) 的方案数。
记 \(f_i\) 表示从 \(s\rightarrow k_i\) 且不经过其它 \(k_{j\ne i}\) 的方案数,则有 \(f_i=a_{s,k_i}-\sum_j a_{s,k_i}\times a_{k_j,k_i}\)。
则答案为 \(a_{s,t}-\sum_i f_i\times a_{p_i,t}\)
题目描述:
做法:
记 \(i\) 序列最小元素为 \(x_i\) 则:
- \(\sum \dfrac{b_i(2x_i+b_i-1)}{2}=0\)。
- \(\sum \dfrac{b_i(b_i-1)}{2}=-\sum b_ix_i\)
由裴蜀定理得:
- \(\gcd(b_i)|\sum \dfrac{b_i(b_i-1)}{2}\)。
- \(2|\sum \dfrac{b_i(b_i-1)}{\gcd(b_i)}\)。
如果 \(\gcd(b_i)\bmod 2=1\) 则恒成立。
否则设 \(\gcd(b_i)=k \times 2^p\),其中 \(k\bmod 2=1\)。
则
- \(2|\sum \dfrac{b_i(b_i-1)}{2^p}\)。
枚举 \(p\),大于 \(p\) 的任选,等于 \(p\) 的选偶数个。
合并连续的两个1
。
数量记为 \(a\)。
零的个数记为 \(b\)。
由于 11
可以随意移动,则答案为 \(\binom{a}{a+b}\)。
发现每次必定是最大的 \(n\) 个数 \(-\) 最小的 \(n\) 个数。
有 \(\binom{n}{2n}\) 种 \(p,q\),乘积即为答案。
答案即为 \(a \operatorname{and} b =0\) 的 \((a,b)\) 的个数。
数位 dp 即可。
发现 \(\forall i,a_1|a_i\),这题做完了。