ARC153 ABC 题解
A
【题意】
给定 ,求第 个满足以下条件的数:
- 它是一个 位数,没有前导 。
- 它的第一位等于它的第二位。
- 它的第五位等于它的第六位。
- 它的第七位等于它的第九位。
例如 。
保证存在第 个这样的数。
【分析】
本质不同的数只有 个。可以直接枚举。
也可以按位直接求,显然第 个满足条件的数是 。
B
【题意】
给定 的字符矩阵。做 次操作,每次形如把矩阵竖着和横着切两刀,形成的四个区域分别翻转 。
求操作之后的矩阵。
首先考虑一维怎么做。手玩一下如下图:(我们只关心每个位置最后跑哪里去了,不妨设 )
注意到不管怎么翻转,都是一个 正或反着循环放在某一个位置上。进一步地,如果操作次数为奇数,那么是反的。否则是正的。位置怎么考虑?考虑追踪 和 的分界线,不难发现进行左端点为 的操作之后,它在什么位置上:
( 为奇数)
( 为偶数)
然后就能做一维的情况了。
接下来推广的时候我们会发现两维之间是独立的,根本不需要其他什么考虑就可以推广了。
因此我们得到了一个做法:每一维分别考虑,每一维只需要维护形如 的一个数,最后按顺序放置标记位置的数字即可。
时间复杂度 。
C
【题意】给定数列 ,其中每个数都是 或者 。试图构造 使得 严格递增并且 。
先给 随便赋值,然后调整一下。
考虑随便赋值之后,得到的数是 。我们可以给某一个前缀减去某个数,或者给后缀加上某个数,使得总共变化了 。如下图所示。
令选出的位置的 之和为 。不难发现 取 或者 的时候是最好的(灵活性最大,并且限制也最少)。
如果 ,需要总共加上一个负数。那么可以选择一段 的前缀,给它们分别减去 ;或者选出一段 的后缀,给它们分别加上 。
同法。
如果选不出来怎么办?其实这些情况都是无解的。考虑证明。
因为选不出来的串首先长度是偶数,其次形如下面这样的数列,可以让 表示左括号或者右括号, 表示另一种括号,得到一个合法括号序列。
我们会发现这样的时候选不出 的前缀,也选不出 的后缀。
其实我们考虑一一匹配的括号。不妨考虑左括号是 ,右括号是 的情况。令一对匹配括号的下标是 。这时候由于 数组左边永远比右边小,因此 。
因此这样得出来的一定是个小于 的数,因为每一对数字加起来都小于 。
因此有解构造,无解输出就行。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?