题解 | 小苯的魔法染色

小苯的魔法染色

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)

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务