题目来源:2025 年广西中小学生程序设计挑战赛复赛(进阶组试题)。
求知的隐士将知识传授给懵懂无知的凡人,隐士每年提出 个正确的观点和 个错误的观点,且 。其中正确的观点用数字 “1” 表示,错误的观点用数字 “0” 表示。例如,如果他提出了 3 个正确观点和 2 个错误观点,序列可能是 “11100” 或 “10101”。人们按序列的顺序讨论这些问题。
隐士定义,一条观点序列是好的:当且仅当序列中错误观点数量与正确观点数量之差为 。也就是说,。隐士同时注意到:当某个观点序列的所有子段中, 的最大值恰好是 时,人们获得知识的效果最好可理解。现在隐士希望小景编写一个程序,使他不必手造观点序列。
序列需恰好包含 个 1 和 个 0,并且所有子段的 的最大值恰为 。保证输出的数一定存在符合要求的序列。
形式化地,设某序列 包含 个 1 和 个 0,则 为:
所有子段构成集合 ,此时:
子段:原序列中一段连续的非空子序列。例如,假定原序列为 ,其子段有 ,,,,, 等。
字典序:对于数字,不同排列的字典序是从左到右依次对应的数字的先后决定的。例如对于 4 个数字的排列 1234 和 1243,排列 1234 在前(称为字典序更小),排列 1243 在后(称为字典序更大)。