先放一个大佬的博客:「loj - 2850」「ROI 2018 Day 2」无进位加法
用数据结构来优化搜索
神一样的 Kidulthood 考场上就已经意识到了这道题的正解是搜索
考虑搜索过程的本质
首先是找到最小的满足 t i + i t_i+i ti+i最大的点 i i i,发现对于 p ≠ t i + i p\ne t_i+i p=ti+i的情况都可以直接回溯掉,否则先把 [ 1 , i − 1 ] [1,i-1] [1,i−1]全部删掉,然后将其后继插入到 开头。可以分析出递归的次数其实就是最开始选定的那个串的长度。
那么分两种情况:
1.1 1.1 1.1 成功,那么其实就不需要回溯了
1.2 1.2 1.2 不成功,那么刚开始选定的那个串就会被删掉
这样复杂度 O ( L log L ) O(L\log L) O(LlogL)。