U332191 翻硬币
题目背景
由于数据较大,仅上传部分数据
题目描述
xpz很无聊,他从家里找出了一堆硬币,共有$n$个,并把他们**排成一列** 。一开始,这些硬币都是**数字面朝上的**,并且,xpz有一种奇怪的能力,他能通过意念**将连续的$m$个硬币翻转**。但是xpz实在是太菜了,每次只能恰好翻转$m$个硬币,**多一个少一个都不行**。现在xpz想把这一列硬币翻转成他想要的样子。由于xpz实在是太蠢了,不知道要怎么运用他的能力,于是他找到了正在某经济特区知名中学参加信息学竞赛集训的你,希望你能告知他**最少**需要几次才能翻转成他想要的结果。
输入格式
**该题数据较多,请使用较快的读入方式!**
第一行输入一个正整数 $T$ 。
接下来 $2T$ 行,每两行的第一行两个个正整数 $n$ 和 $m$ ,含义如题目描述。第二行$n$个整数$a_i$,代表xpz想要的状态,$a_i = 0$ 时表示第 $i$ 个硬币数字面朝上,$a_i = 1$ 时表示第 $i$ 个硬币数字面朝下。
输出格式
共输出 $T$ 行,每行输出一个整数。如果可以达到最终状态,则输出要求最少次数;如果达不到最终状态,则输出 $-1$。
说明/提示
第一组数据,xpz可以分别翻转三号和四号硬币。
第二组数据,xpz可以同时翻转三号和四号硬币。
第三组数据,显然xpz无论怎么翻转都到达不了目标。
**【数据范围】**
- 对于 $30\%$ 的数据:$1\le m \le n\le 10^3,1\le n*T\le 5\times 10^3$
- 对于另外 $10\%$ 的数据:$m = 1$
- 对于 $100\%$ 的数据:$1\le m \le n\le 10^6,1\le \sum n*T\le 5\times 10^6$
由于数据过大,仅上传部分测试数据。