百度之星2025第一轮T5 Odd Occurrence
百度之星2025第一轮T5 (卢卡斯定理) 遇到奇数
题目描述
小度熊有一个长为\(n\)的序列\(a\)。显然,这个序列有\(2^{n}-1\)个非空子序列(如果两个子序列内容相同而位置不同,我们将其看作两个子序列)。
现在小度熊将所有\(2^{n}-1\)个子序列都写在了纸上。写完之后,他希望能将这些子序列整理归类。具体地,小度熊会把内容相同的子序列放进同一个箱子里,内容不同的子序列则一定在不同的箱子里。
然而子序列实在是太多了!不过小度熊只想知道,将子序列整理归类之后,是否对于每个非空的箱子,里面都恰好有奇数个子序列。
输入格式
本题单个测试点内有多组测试数据。
第一行,一个整数\(t(1â¤tâ¤10)\),描述数据组数。对于每组数据:
-
第一行,一个整数\(n(1â¤nâ¤2Ã10^6)\)。
-
第二行,\(n\)个整数\(a_1, a_2, ..., a_n(1 â¤a_i â¤n)\)。
保证对于单个测试点,所有\(n\)的和不超过\(2Ã10^6\)。
样例输入
3
3
121
5
11123
7
2222222
样例输出
No
Yes
Yes
解题分析:性质题,先寻找蛛丝马迹带来的较浅显性质
发现一
-
对于每一段连续长为\(n\)的同一个数,组合数\(\binom{n}{k}\)(\(k \in[1, n]\))为奇数,即\(\binom{n}{k} \% 2 = 1\)。
-
组合数取模问题常涉及卢卡斯定理和逆元,此处逆元无法推出有效性质,故聚焦卢卡斯定理。
-
设\(n\)的二进制表示为\(\overline{a_1a_2a_3a_4...a_s}_{(2)}\),\(m\)的二进制表示为\(\overline{b_1b_2b_3b_4...b_s}_{(2)}\)。根据卢卡斯定理推论(2 为质数):
\(\binom{n}{m} \equiv \prod_{i=1}^{s}\binom{a_i}{b_i} \pmod{2}\)
::::success[卢卡斯定理的一个小推论]

::::
-
上式要求每一位上\(\binom{a_i}{b_i} = 1\),即不存在\(\begin{cases}a_i=0 \\ b_i=1\end{cases}\),等价于二进制意义下\(m \subseteq n\)且\(m \in[1, n]\)。
-
因此,\(n\)的二进制需全为 1,即\(n=2^k - 1\)。
发现二
-
根据上述结论,若一段连续数字的长度无法表示为\(2^k - 1\),则不满足条件。
-
忽略中间 “夹心” 部分,若一个数的总出现次数\(n' \neq 2^k - 1\),同样不满足条件。
-
可将\(n=2^k - 1\)拆分为多个\(n'=2^k - 1\),且\(n'\)的数量必为奇数(反证法可证)。
-
综上,得出关键性质:相等的数必须连续。
发现三:
满足 “连续数字长度为\(2^k - 1\)” 且 “相等数字连续” 是序列合法的充要条件。

浙公网安备 33010602011771号