P3294 [SCOI2016] 背单词 解题报告

简要题意

给出 \(n\) 个字符串 \(s_i\),给这 \(n\) 个字符串进行重新排序,使得每个有后缀字符串的字符串 \(s_i\),都有至少一个后缀字符串编号小于它。令 \(rk_i\) 表示字符串 \(i\) 最大的编号且满足 \(rk_i <i\)(如果没有则为 \(0\))。最小化 \(\sum \limits_{i=1}^{n} i-rk_i\)

分析

首先我们要可以刻画后缀的条件,这个可以通过将字符串逆序后插入 Trie 实现。

然后考虑怎么排序。我们发现从根开始,优先访问 \(sz\) 较小的子树所得到的 dfn 序就是题目所求。

因为如果交换两个儿子 \(i,j\) 的顺序,变化量为\(sz_j-sz_i>0\),答案变劣。

posted @ 2025-08-21 18:46  XiaoZi_qwq  阅读(6)  评论(0)    收藏  举报