这是本文档旧的修订版!
Solved | A | B | C | D | E | F | G | H | I | J | K |
---|---|---|---|---|---|---|---|---|---|---|---|
Pantw | O | √ | |||||||||
Withinlover | O | √ | √ | ||||||||
Gary | √ |
(√ for solved, O for upsolved, - for tried but not solved)
直接用一个 unsigned long long can[256][256][4]
保存 $(i, j, k)$ 能否凑成一个 $\mathsf{set}$。
这个直接 $\Theta(n^3)$ 预处理即可。
后面查找的时候按照这样的算法查找即可:
$id := \left[encode(x)\;\;\mathtt{for}\;\;x\;\;\mathtt{in}\;\;input\right]$
$has := \varnothing$
$\mathtt{for}\;\;i\;\;\mathtt{from}\;\;1\;\;\mathtt{to}\;\;n$
$\qquad\mathtt{for}\;\;j\;\;\mathtt{from}\;\;i+1\;\;\mathtt{to}\;\;n$
$\qquad\qquad\mathtt{if}\;\;can[id[i]][id[j]]\cap card\neq\varnothing$
$\qquad\qquad\qquad\mathtt{output}(k, i, j)\qquad\qquad\qquad//\;\;k\in can[id[i]][id[j]]\cap card$
$\qquad\qquad\qquad\mathtt{break}$
$\qquad\qquad\mathtt{end\;if}$
$\qquad\mathtt{end\;for}$
$\qquad has = has\cup\{id[i]\}$
$\mathtt{end\;for}$
ptw: