Redistricting
题号:NC24218
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

奶牛们的特大城市,牛都,要进行重新分区了!——这总是一个在居住在这里的两大主要种族(荷斯坦牛和更赛牛)之间富有争议的政治事件,因为两大种族都想要在牛都政府中保持足够的影响力。

牛都的大都市圈由一列N块牧草地(1≤N≤3⋅10^5)组成,每块里有一头奶牛,均为荷斯坦牛和更赛牛之一。

牛都政府想要将大都市圈划分为若干个连续的区,使得每个区至多包含K块牧草地(1≤K≤N),并且每块牧草地恰好属于一个区。由于政府当前由荷斯坦牛控制,她们想要找到一种分区方式能够最小化更赛牛较多或者均势的区的数量(如果更赛牛的数量与荷斯坦牛的数量相等那么这个区就是均势的)。

有一个关心政治的更赛牛团体想要知道政府的分区计划可能会对她们造成多少损害。帮助她们求出最坏情况,也就是更赛牛较多或是均势的区的最小可能的数量。

输入描述:

输入的第一行包含两个空格分隔的整数N和K。第二行包含一个长度为N的字符串。每个字符均为'H'或者'G',表示荷斯坦牛(Holstein)或者更赛牛(Guernsey)。

输出描述:

输出更赛牛较多的或者均势的分区的最小可能数量。
示例1

输入

复制
7 2
HGHGGHG

输出

复制
3