平衡的字符串(思维)

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; 
}

以上是关于平衡的字符串(思维)的主要内容,如果未能解决你的问题,请参考以下文章

CodeForces 1005D Polycarp and Div 3(思维贪心dp)

bzoj1503 郁闷的出纳员(平衡树,思维)

201621123062《java程序设计》第九周作业总结

架构设计策略之寻找设计的最佳平衡点

平衡树的简介

内心的平静是一切理性思维的起点