传送门
A:取 即可。
B:注意到如果有连续三个相邻不同字符,这个长度为 的子串满足;如果有相邻两个字符相同,这个长度为 的子串满足。否则字符串形如 ,没有子串满足。
C1:数学太拉了
题意:给定正整数 ,计数 且 且 中有至少一个是 的倍数。()
分析:
因为 ,所以 ,所以 必定是真因数。
而一个数的真因数 它的 ,所以要使得 是 的真因数,,所以 至少二进制比 少一位。
而当 时, 和 的二进制位数相等,所以 不是 的因子;而且此时它比 大,也不可能是 的因子。
所以:合法的 总是 。
因此枚举 检验即可。
C2:数学太拉了
题意:给定正整数 ,计数 且 且 中有至少一个是 的因数。()
分类讨论。依次考虑 是 与 的因数。
-
是 的因数。记 ,问题转化为求有多少个 使得 是 的因数且 。
异或性质:。 所以当 时, 总是满足,只需要保证 是 的因数即可。这等价于问 在 里有多少个它的倍数,答案是 。
那对于 的呢?再异或性质:,所以当 时, 总是不满足。
因此这种情况剩下可能合法的 只存在于 里,暴力枚举检验。
-
是 的因数。因为有了上面的观察:(这限制了异或的范围),所以当 时,,这时候 要是 的因数只能 ,无解。
所以剩下的情况只有 的情况,因此枚举 检验即可。
-
都是 的因数。
转化: 是 因数。
而 ,而 在 时 ,所以当 时不可能合法。
检验 即可。
D:
题意:给定数集 ,要求构造一个(或判定无解)字典序最大的 长度序列 ,使得 且 。()
的条件很迷惑。取 为 的因数,就得出结论:对于任意 ,不能有 。
那么这个条件是否是充分的?假设 ,其中 ,则 ,与 矛盾。所以是充分条件。
法一:贪心法。枚举 ,每次都选与前面不干扰的最大数。(赛时想到了,然而没想到上面的结论所以是假复杂度)
实现方法:枚举位置 的因数 (均摊 )。然后给数 打上标记,再从大到小枚举找第一个打标记的即可。
法二:考虑 建立一个 DAG,那么位置 能填的数的大小仅与在 DAG 上以 开头的最长链长度有关,可以用 DP 求出;因为边的总数是 的。
如果你仔细分析,发现这个值等于 的各质因数次数之和 。
E:巧妙 DP 题。
题意:给定初始序列 。每次可以将 "当前序列的逆序对数" 插入序列的任意位置,问有多少种可能的 长度序列。。
来自 Byf 的观察:记 ,答案为 。
解法:
注意到当逆序对数大于序列内任何一个数之后,如果不将它插在末尾,新的逆序对数仍然大于序列内任何一个数。
记 表示当前序列为 长度且逆序对数大于序列内任何一个数,能构造出多少种 长度的序列。
如果不插入到末尾,;否则枚举插入 个到末尾,然后随便插入一个在前 个里面( 种方式),。注意可以直接在末尾插到 长度。
在求出 后,我们的问题变成第一次逆序对大于序列内任何数的位置在哪里。初始序列是 ,也就是只要出现逆序对 就可以了。
初始逆序对数为 。逆序对数将一直为 直到第一次插入 至末尾,此时逆序对数为 。
然后为了保持逆序对不达到 , 只能一直插入在末尾的那一块。
所以,逆序对 的序列必然形如 。
如果最终逆序对数都 ,有 种可能: 的个数 。
回到问题,我们要枚举 ,然后计数长度为 的第一次逆序对数 的序列种数。因为逆序对数 的必然形如上面的形式,因此长度为 的第一次逆序对数 的序列,在长度 时就是上面的形式,因此只需决策第 次的 插入哪里。如果中间那个 位于 ,则有 种方案插入。因此对于序列 的方案数就是 。
总方案数即为 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!