题意
一个字符串的变形词是一个字符串,它含有恰好完全一样的字母,可能以不同的顺序出现。
字符串S和T是正交的,当且仅当它们长度相同,而且每个对应位都不同。
给出一个字符串S,求S的字典序最小的正交变形词。如果这样的字符串不存在,就让答案是空串。
字符串长度 n≤50000 ,所有字符都是小写英语字母。
Time
Limits:1000ms
Memory
Limits:64M
分析
因为要求字典序最小,我们可以考虑贪心。
从前往后,对于每一位,我们枚举它这位放什么字母,那么我们的问题就变成了如何判定这位放了某个字母后是否合法。比较容易想到的是网络流。
对于当前枚举到的位置
i
,我们只要知道这位放某个字母后第
但是最坏情况下,网络流会超时。我们需要更快的判定方法。
设对于字符
则有:
∀i,fi+gi≤length⇔
本题所构图能够满流 。
必要性显然,充分性可用反证法证明。
这样原题就能很好地解决了。