【求条】95pts
查看原帖
【求条】95pts
757954
cabbage_flower楼主2025/1/12 08:37
#include<bits/stdc++.h>
using namespace std;

int n, k, ll;
string s;
int t1, t2;
long long ans;

bool check(int x) {
	int s1 = 0, s2 = 0, ans = 0, t = 1;
	for (int i = 0; i < ll; i++) {
		if (s[i] == '0') {
			ans += s2;
			s1++;
		} else {
			ans += s1;
			s2++;
		}
		if (ans > x) {
			if (s[i] == '0') {
				s1 = 1;
				s2 = 0;
			} else {
				s2 = 1;
				s1 = 0;
			}
			ans = 0;
			t++;
		}
	}
	return (t <= k);
}
int main () {
	scanf("%d%d", &n, &k);
	cin >> s;
	ll = s.size();
	for (int i = 0; i < ll; i++) {
		if (s[i] == '0') {
			t1++;
		} else {
			t2++;
		}
	}
	long long l = 1, r = 1ll * t1 * t2;
	if (r == 0) {
		printf("0\n");
		return 0;
	}
	while (l <= r) {
		long long m = (l + r) >> 1;
		if (check(m)) {
			r = m - 1;
			ans = m;
		} else {
			l = m + 1;
		}
	}
	printf("%d\n", ans);
	return 0;
}

如果帮忙发现错误,请@我一下

WA 13

2025/1/12 08:37
加载中...