ABC320G Slot Strategy 2 (Hard)

发布时间 2024-01-06 08:23:26作者: Pengzt

ABC320G

直接做不是很好做,考虑用二分将其转化为判断可行性的问题。

发现每个字符串都会对应一个唯一的时间,每个时间最多也只对应一个字符串,这启发我们将字符串与时间连边,然后跑二分图的最大匹配。这样的总点数是 \(\mathcal{O}(nm)\) 的,无法通过。但是每一种字符中只有前 \(n\) 个是有用的,因为这样一定会比后面的更优。

实现时,可以先枚举最后相同的字符,用 vector 存下该字符在字符串 \(i\) 中的前 \(n\) 个位置,然后再跑最大匹配。如果使用匈牙利,单次的 check 显然是 \(\mathcal{O}(n^3)\)

为保证程序的效率,可记录下每次 vis 数组变化的位置。而 match 数组可直接使用 umap 代替。

时间复杂度:\(\mathcal{O}(|\Sigma|n^3\log n)\),其中 \(|\Sigma|\) 为字符集的大小。

评测记录