一种个人感觉是错解的做法。
首先,我们可以想到一种非常暴力的做法,直接枚举 a、b、c、d。开个三维布偶数组判断是否存在这个三元组。这样做时间是 n4 的,空间是 n3 的。时空双爆炸。
然后可以想到一种神奇的优化,我们再开三个二维布偶数组,分别判断:
- 是否存在一个三元组 (x,y,?)。
- 是否存在一个三元组 (x,?,y)。
- 是否存在一个三元组 (?,x,y)。
然后进行剪枝。但是这样空间会爆炸,因为是 n3 的。于是我们可以联想到哈希,我们对后两个维度来个二次哈希(即对哈希后的值哈希),然后就可以了,注意用这种做法可能需要卡常。
然后这种做法就 AC 了,不知到为什么?有没有神犇可以将这种做法卡到 T?或者证明复杂度正确。