题解 | 小苯的魔法染色
小苯的魔法染色
https://www.nowcoder.com/practice/2e27509b990d4d02a70c0f208f078cdf
import sys
import math
n,m =map(int,input().split())
s = input()
l = 0
r = 1e8
while l<r:
mid = int(r+l) >> 1
# 二分猜的答案 需要检验
cnt = 0 # 每次检验的时候 操作次数
i = 0
while i<n:
if s[i] == 'W':
i = i+ mid # 让i直接移动到下一个位置 相当于将区间[i,i+mid]染色
cnt += 1
if cnt > m: # 如果已经操作次数超过最大次数了 提前结束
break
else:
i = i+1
if cnt <= m:
# 一个可行的答案
r = mid
else:
l = mid + 1 # 猜的答案不可行 小了
print(l)
查看13道真题和解析