#CSPSMNS01C. 修改 01 序列

修改 01 序列

【题目描述】

长度为 𝑛𝑛 的只包含 0011 的序列,你可以对它进行多次操作。在每次操作中,你都可以选择一个数字 0 变成 1, 或者选择一个数字 1 变成 0,使得最终局面满足如下特点:

对于任意相邻的两个 1,它们在序列中的距离都是 𝑑𝑑 的倍数,给定 𝑑𝑑,求最小操作次数。

长度为 𝑛𝑛 的只包含 0 和 1 的序列,每次操作选一个 0 变 1 或者 1 变 0,使得最终局面的相邻的两个 1 之间距离是 𝑑𝑑 的倍数,问最小操作次数。

【输入格式】

第一行输入两个正整数 #𝑛, 𝑑#。

第二行输入 n 个数,表示题目所描述的序列。

【输出格式】

输出一个数,表示最小操作次数。

【样例 1 输入】

5 2
0 1 0 0 1

【样例 1 输出】

1

【说明】

将任何一个 1 变成 0,这样就没有相邻的 1 了,自然也满足题目要求。

【样例 2 输入】

8 2
1 0 1 0 0 0 1 1

【样例 2 输出】

1

【说明】

将最后一个 1 变成 0,这样序列变为 [1,0,1,0,0,0,1,0],1 的位置分别是 [1,3,7],其中 1

和 3 的距离是 2 的倍数,3 和 7 的距离也是 2 的倍数。

【备注】

  • 对于测试点1:1𝑛105,𝑑=11 ≤ 𝑛 ≤ 10^5 , 𝑑 = 1
  • 对于测试点2~3:1𝑛105,𝑑=21 ≤ 𝑛 ≤ 10^5 , 𝑑 = 2
  • 对于测试点4~5:1𝑑𝑛1031 ≤ 𝑑 ≤ 𝑛 ≤ 10^3
  • 对于测试点6~10:1𝑑𝑛1051 ≤ 𝑑 ≤ 𝑛 ≤ 10^5