B3740 [信息与未来 2018] 棋盘游戏

题目描述

给定一个十进制数 $x$,将它转换为二进制字符串并在高位填 $0$ 以补足 $16$ 位,就得到了 一个长度为 $16$ 的 $01$ 字符串,我们用这个字符串表示 $4 × 4$ 的棋盘,按从左到右、从上到下的顺序将 $0$(白子)、$1$(黑子)放入棋盘。 例如,$(447)_{10} = (0000 0001 1011 1111)_2$,按顺序填入棋盘($0$ 白子、$1$ 黑子),得到如下棋盘(左边棋盘): ![](https://cdn.luogu.com.cn/upload/image_hosting/vyma7pie.png) 我们现在可以交换棋盘中**相邻**(共享一条边的两个格子相邻,因此一个格子至多有 $4$ 个相邻的格子)的黑色和白色棋子。从左图的棋盘变为全部白子在上、全部黑子在下(右边棋盘所示)的棋盘,至少需要 $3$ 步。 对于给定的棋盘(保证棋盘中恰好有 $8$ 个白子和 $8$ 个黑子),求把棋盘变为全部白子在上、全部黑子在下最少的交换步数。

输入格式

输入一行一个整数 $x$,为十进制表示下的棋盘。

输出格式

输出一行一个整数,最少需要交换的步数。

说明/提示

### 样例解释 #### 样例 $1$ 参考上图,将 $(2, 4)$ 处的⿊⼦移动到 $(3, 2)$ 需要 $3$ 步。 #### 样例 $2$ 如下图所示,$(42405)_{10} =(1010 0101 1010 0101)_2$。 ![](https://cdn.luogu.com.cn/upload/image_hosting/aie8kf0n.png) ### 数据规模 $50\%$ 的测试数据满足棋盘可以在 $6$ 次交换内变为白子在上、黑子在下。 所有数据保证 $0 ≤ x < 2^{16}$,且 $x$ 转换为二进制后恰好有 $8$ 个 $1$。 > 本题原始满分为 $20\text{pts}$。