Hack 其实,这道题在数据范围和时间限制的设置上不太合理。 常见做法的复杂度是 O(T⋅2n/2⋅n)$O(T \cdot 2^{n/2} \cdot n)$, O(T⋅2n/2⋅logn)$O(T \cdot 2^{n/2} \cdot \log n)$ 或者 O(T⋅2n/2)$O(T \cdot 2^{n/2} )$(可能要预处理一些东西,这是一个 例子)。 这差不多是 4⋅108$4 \cdot 10^{8}$ 左右,时限只给了2$2$ 秒... 但是对于官方数据加上 now >= ans 优化遍历到的状态就很不满了(不加这个优化大概率会 TLE)。 但是加上各种优化之后,单组数据的 dfs 的调用次数仍然可以卡到 3500000 次以上,常数最小的代码也要跑至少 3.5$3.5$ 秒。 UOJ 上的std 为了防止被卡常,实现的是模拟退火。这个正确性不大靠谱,本来打算卡 TLE 的 Hack 变成了 WA... 所以有什么比较好的解决方案吗?