构造题专练
[THUPC2022 初赛] 造计算机
这是一道很水的构造题
首先我们把一个置换拆分成若干个循环置换的乘积,例如:
这样的话,上面那一行表示下标,下面那一行表示对应位置上的数。
这道题经过简单分析我们可以发现 m=1 是不可能的,因此很自然而然地想到 m=2 就是答案。
因为每个环之间是独立的,所以我们分别分析。
先来看这个置换:
一个很自然的想法是按(3,2,1)即循环置换的顺序来操作,会很舒服地发现基本所有数都能归位,但最后一步却无论如何也执行不了。
- 一个非寄存器的位置占据了原本寄存器的位置,导致原本的寄存器无法归位
- 另一个寄存器没有发挥用处
于是我的解决方案是:我们在做上述操作前,把这两个寄存器和非寄存器的位置先调换一下,然后再用另一个寄存器来操作。最后原来那个寄存器被调换了出来,而另一个寄存器则可以和 n+1 位置调换,也能被调换出来。
可以发现我完全就是在复制这个置换上的操作,只不过加了少量调整而已。而如果仔细观察的话,会发现我操作的位置其实就是这个循环置换的首尾,所以其实并不难寻找。
总结:这道题我主要是突然有了灵感,想到在循环置换的形式上做文章,最后得到了合适的构造方案。
__EOF__

本文作者:仰望星空的蚂蚁
本文链接:https://www.cnblogs.com/cqbzly/p/17530149.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/cqbzly/p/17530149.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」