来自厦大软件工程何大佬的积分赛题目
图片来自何dalao(每个计分点有至多500组数据)
高中做过的有点意思的水题。
正常的思路是dfs+状态压缩求解,但考虑到该题每个积分点有多组数据,这样很可能会超时,所以要针对这一题设计玄学解法。
我们先枚举第一行所有翻转情况,
假设我们要全变成1,第一行的一种翻转情况翻转后是这个样子:11001
则第二行必定翻转且仅翻转第3,4位置的棋子,以此使第一行变成全为1的序列。
以此类推,直到最后一行根据第4行的情况翻转后如果全为1,则第一行的该翻转情况成立,得到一组解。
从所得的所有解中取翻转次数最小的即为答案。
这样对每一组数据的时间复杂度可以压缩至O(n*a),其中n为数据组数,a为一个不大于1000的常数。