Codeforces Round #661 (Div. 3) D. Binary String To Subsequences(队列)

题目链接:https://codeforces.ml/contest/1399/problem/D

题意:给一串由0和1组成的字符串,问最少可以分成多少个子序列使得每个子序列没有相邻的0和1.

题解:直接模拟标号,同时需要两个队列,q0存的是以0结尾的标号,q1存的是以1结尾的标号,若当前s[i]='0'判断q1是否为空,非空则该元素的标号=队首的标号,再将队首弹出放入q0队列(此标号从以1结尾变成了以0结尾),反之亦然。

代码:

#include
using namespace std;
typedef long long ll;
const int maxn=2e5+10;
int ans[maxn];
 
int main()
{
	int T;cin>>T;
	while(T--){
		int n;cin>>n;
		string s;cin>>s;
		queue q0,q1;
		int id=0,mx=0;
		for(int i=0;i

 

你可能感兴趣的:(数据结构,codeforces)