大家都知道java有GC垃圾回收机制。一次他在项目中发现了有一个含n字节的连续内存区域可能存在问题,他手中有一种检查软件,软件每次运行可以检查一段连续的内存区间。
由于检查的区间长度越长,要花费的时间就越多,因此他希望能在运行最多m次程序的情况下,每次检查的区间长度最大值最小,且检查的区间的并集包含了所有出现的1。
现给出内存的情况(0表示该字节不需要检查,1表示该字节需要检查),求最小的区间最大值。
输入多组数据。
每组数据第一行为两个正整数n,m(1<=n<=1000000,m<=n),表示内存总长为n个字节,检查软件运行的次数上限m。
第二行为一个长度为n的01串,表示待检查的内存区域的情况。0表示不需要检查,1表示需要检查。
对于每组数据,输出一行“Case %: A”,其中%表示第几组数据,A表示该组数据的答案。
7 3
1100101
3 1
101
1 0
1
5 3
00000
5 2
10001
Case 1: 2
Case 2: 3
Case 3: 0
Case 4: 0
Case 5: 1
本题改编自百度2017秋招笔试,以后想去BAT的小伙伴要努力学算法了。大型互联网公司必考算法,希望大家认真研究jhljx提供的笔试题,祝好。
为防止大家WA和TLE,在样例中又增加了三组样例