• 2024-09-24[COCI2009-2010#2] PASIJANS
    [COCI2009-2010#2]PASIJANS题意给出\(n\)个栈,每次可从任意一个栈取出栈顶放入答案队列。求字典序最小的答案队列。思路考虑贪心。每次从字典序最小的栈中取出栈顶。如何动态找出字典序最小的栈?可以使用堆,单次\(O(1)\)查找最小值,\(O(\logn)\)插入。但比较两个栈的字
  • 2024-09-24题解:P5184 [COCI2009-2010#2] PASIJANS
    分析考虑贪心,每次尽量选最小的字符。显然是每次选字典序最小的弹栈。我们要比较的是每个栈的字典序,但是朴素比较是\(O(L)\)的,考虑将它优化到\(O(1)\)。这个时候我们可以先离散化然后套路地将所有串拼一起跑SA。记得在每个串之间加分割符。这样每次比较字典序就变成了\(