求助一道算法题目

题目如图
这题我觉得最好就是用对k二分来做,但是我总是过不了测试用例,牛客上的那测试用例老长一串又复制不了,有没有大佬帮我看下代码哪里有问题呀?感激不尽!!代码如下:
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt(),m=in.nextInt();
        TreeSet set=new TreeSet<>();
        in.nextLine();
        String wall=in.nextLine();
        for(int i=0;i            if(wall.charAt(i)=='W') set.add(i);
        }
        if(set.ceiling(0)==null) System.out.print(0);
        int left=-1,right=n+1;
        while(left+1            int mid=(left+right)/2;
            if(check(set,mid,m)) right=mid;
            else left=mid;
        }
        System.out.print(right);
    }
    public static boolean check(TreeSet set,int k,int m) {
        int idx=set.ceiling(0);
        for(int i=0;i            idx+=k;
            if(set.ceiling(idx)==null) return true;
        }
        return false;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务