CF1981C 题解

吐槽:恶心题,赛后才调出来一发过/tuu。

友情提示:这场比赛 CF 有中文官方题解哦!这题使用中文版官方题解 LCA 做也是很好的一种方法。

思路

首先不难发现,一个数先乘 22 后除 22 会得到原数。若 aabb 间有 cc1-1,则我们可以对 aa 先除后乘得到 bb,最后浪费多余的 1-1

首先我们当然贪心考虑最少的乘除次数,那时,aa 被除后的“渣渣”cc 的二进制是 bb 的前缀,此时只要从前缀后一位开始,逐位考虑是否需要在乘 22 后加 11。此时,如果 1-1 不够用了或剩下的 1-1 是奇数,则无解。

最后考虑前缀 1-1 和后缀 1-1。首先整个数列都是 1-1 特判一下,1,21,2 交替输出就行。其次前后缀 1-1 处理方法都一样,可以对最前(最后)的非 1-1 进行 1,21,2 倍交替输出就可以。

代码过长,故放个 CF 提交记录链接(含代码)。

posted @   sz_jinzikai  阅读(12)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示