【学习笔记】[AGC044C] Strange Dance
题目挺绕的,中途甚至怀疑自己是不是读错了题。
瞪了半天一无所获,冷静了一下发现可能是哪个地方想错了,结果又产出了伪算法,根本没想到
trie
\text{trie}
trie树可做。。。
为什么我认为
trie
\text{trie}
trie树不可做?因为我觉得操作
1
1
1用
trie
\text{trie}
trie树做不了。。。
完蛋了。
我们建立 3 3 3进制的 trie \text{trie} trie树, trie \text{trie} trie树上每个点到根节点的路径表示它的位置,同时 trie \text{trie} trie树上每个点记录了一个权值。然后操作 1 1 1相当于交换每个节点的 1 1 1号儿子和 2 2 2号儿子,当然我们不会老老实实对每个结点交换它的儿子,而是通过打懒标来解决。这也契合了我们只需要输出最终序列的目的。
真正令人头疼的是操作
2
2
2。当时觉得进位太复杂了就没往那方面想 我们按从低到高位建立
trie
\text{trie}
trie树,首先对于根节点,我们应该把
1
1
1号儿子接到
2
2
2号儿子上面,
2
2
2号儿子接到
3
3
3号儿子上面,对于
3
3
3号儿子,我们又要把对应的子树拼接到
0
0
0号儿子对应的位置,我们只用把整颗子树搬过去而不用对子树内部进行额外的递归,因此每次只会递归一边。
复杂度 O ( ∣ T ∣ n + 3 n ) O(|T|n+3^n) O(∣T∣n+3n)。
最近似乎总是遇到以前的知识点,但是理解不深入又不会做的情况,看来还是太菜了
想了一下,发现我只会 O ( n 4 ) O(n^4) O(n4)的暴力做法。想了想剪枝,感觉过不了,似乎网格图也没啥性质。
然后就自闭了
这题看起来很像一个搜索题,然而又是一个算贡献的题目,那么我们考虑所有点的答案之和加起来,应该是 n 3 n^3 n3级别。
__EOF__

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