【学习笔记】CF1458D Flip and Reverse
其实是因为写不动带花树所以来水博客
这题妙啊。在学长的精心讲解下大概搞懂了。
首先这个操作就很神奇。考虑将 1 1 1看成 + 1 +1 +1, 0 0 0看成 − 1 -1 −1,求出其前缀和数组,然后每次就是两个前缀和相同的位置进行翻转,更神奇的是因为位置和值同时翻转了,所以你发现相当于是把前缀和数组的区间 [ l , r ] [l,r] [l,r]拿来翻转了。
于是就有一些更神奇的操作了。考虑构造无向图 G = ( V , E ) G=(V,E) G=(V,E),其中 V = { s u m i } V=\{sum_i\} V={sumi}, E = { ( s u m i − 1 , s u m i ) ∣ 0 ≤ i < n } E=\{(sum_{i-1},sum_i)|0\le i<n\} E={(sumi−1,sumi)∣0≤i<n},发现无论怎么操作这个序列对应的 G G G都是不变的,并且一个序列恰好经过所有边一次所以对应一个欧拉路径,那么大胆猜测一个欧拉路径和序列构成双射关系(?)。或者也可以换一个角度来看,相当于一个环可以顺时针或者逆时针走。并且这个图非常神奇, i i i只可能连到 i − 1 i-1 i−1或者 i + 1 i+1 i+1,所以据此贪心的求出字典序最小的欧拉路径是容易的。
复杂度 O ( n ) O(n) O(n)。
__EOF__

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