百度之星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

解题分析:性质题,先寻找蛛丝马迹带来的较浅显性质

发现一

  1. 对于每一段连续长为\(n\)的同一个数,组合数\(\binom{n}{k}\)\(k \in[1, n]\))为奇数,即\(\binom{n}{k} \% 2 = 1\)

  2. 组合数取模问题常涉及卢卡斯定理和逆元,此处逆元无法推出有效性质,故聚焦卢卡斯定理。

  3. \(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[卢卡斯定理的一个小推论]

::::

  1. 上式要求每一位上\(\binom{a_i}{b_i} = 1\),即不存在\(\begin{cases}a_i=0 \\ b_i=1\end{cases}\),等价于二进制意义下\(m \subseteq n\)\(m \in[1, n]\)

  2. 因此,\(n\)的二进制需全为 1,即\(n=2^k - 1\)

发现二

  1. 根据上述结论,若一段连续数字的长度无法表示为\(2^k - 1\),则不满足条件。

  2. 忽略中间 “夹心” 部分,若一个数的总出现次数\(n' \neq 2^k - 1\),同样不满足条件。

  3. 可将\(n=2^k - 1\)拆分为多个\(n'=2^k - 1\),且\(n'\)的数量必为奇数(反证法可证)。

  4. 综上,得出关键性质:相等的数必须连续。

发现三:

满足 “连续数字长度为\(2^k - 1\)” 且 “相等数字连续” 是序列合法的充要条件。

posted @ 2025-08-05 22:29  Director_Ni  阅读(109)  评论(0)    收藏  举报