LOJ #2305. 「NOI2017」游戏

题目叙述

一共有 \(n\) 个位置,每个位置要填上ABC三种字母中的一个。有要求:第 \(i\) 个位置填 \(h_i\)那么第 \(j\) 个位置就必须填 \(h_j\)。另外,每个位置有最多一个字母不能填。全都能填的位置数量不超过 8 个。给出构造或输出无解。

题解

这其实是个 3-sat 问题。考虑通过枚举转化为 2-sat 问题。枚举那 8 个位置每个位置哪个不能填,跑一边 2-sat 即可。
复杂度 \(\mathcal O(2^8n)\)

总结

  • 转化为能够解决的问题

代码

提交记录

posted @ 2022-07-31 16:14  YouthRhythm  阅读(21)  评论(0编辑  收藏  举报