梦幻布丁
2154. 梦幻布丁
考虑先维护连续段数。
我们可以先搞几个单链表,每个单链表存储的是每种颜色处于的所有位置,由于连续段数等于相邻两数不同的个数,我们可以先算出初始的情况,然后对于每次修改,暴力的将一种颜色的所有位置修改成另外一种颜色,这种操作一定不会使得答案增加,所以我们考虑怎么样会使其减小。对于修改后,如果和左边的值相等了,答案会减少
考虑启发式合并,每次我们让每种颜色个数少的向个数多的合并,这样每个元素每次合并都会使得其所在集合大小至少翻倍,所以复杂度就是
我们考虑合并
注意上图合并点还是用了一个技巧,就是直接将邻接表的
code
本文作者:wscqwq
本文链接:https://www.cnblogs.com/wscqwq/p/17604589.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步