平衡的字符串(思维)
Posted pureayu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平衡的字符串(思维)相关的知识,希望对你有一定的参考价值。
#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 10;
char str[N];
bool vis[N];
int main(){
int n, k;
scanf("%d%d", &n, &k);
scanf("%s", str + 1);
if(k % 2 == 1){
cout << "No" << endl;
return 0;
}
for(int i = 1; i <= k; i ++){
bool one = false, zero = false;
for(int j = i; j <= n; j += k){
if(str[j] == \'1\')
one = true;
if(str[j] == \'0\')
zero = true;
}
if(one && zero){
cout << "No" << endl;
return 0;
}
if(one){
for(int j = i; j <= n; j += k)
str[j] = \'1\';
}else if(zero)
for(int j = i; j <= n; j += k)
str[j] = \'0\';
}
int cnt2 = 0, cnt0 = 0, cnt1 = 0;
for(int i = 1; i <= k; i ++){
if(str[i] == \'0\')
cnt0 ++;
if(str[i] == \'1\')
cnt1 ++;
if(str[i] == \'?\')
cnt2 ++;
}
if(abs(cnt0 - cnt1) > cnt2){
cout << "No" << endl;
return 0;
}
cout << "Yes" << endl;
return 0;
}
以上是关于平衡的字符串(思维)的主要内容,如果未能解决你的问题,请参考以下文章