来自厦大何dalao的算法题-黑白翻转问题

来自厦大软件工程何大佬的积分赛题目

图片来自何dalao(每个计分点有至多500组数据)

高中做过的有点意思的水题。

正常的思路是dfs+状态压缩求解,但考虑到该题每个积分点有多组数据,这样很可能会超时,所以要针对这一题设计玄学解法。

我们先枚举第一行所有翻转情况,

假设我们要全变成1,第一行的一种翻转情况翻转后是这个样子:11001

则第二行必定翻转且仅翻转第3,4位置的棋子,以此使第一行变成全为1的序列。

以此类推,直到最后一行根据第4行的情况翻转后如果全为1,则第一行的该翻转情况成立,得到一组解。

从所得的所有解中取翻转次数最小的即为答案。

这样对每一组数据的时间复杂度可以压缩至O(n*a),其中n为数据组数,a为一个不大于1000的常数。

发表评论