一看求和就知道是要先用前缀和的
让后看到类似相等和不相等的条件,可以考虑并查集
当然这道题由于变量的值一定是0,1所以关系只有不等号也有反传递性,可以直接拆点来做
如果s[i]=s[j]那么我们就将i,j所在的并查集合并,将i'和j'所在的并查集合并
否则我们将i'和j合并,i和j'合并
当一次合并之后发现i和i'在同一个集合里时,直接输出退出
#pragma GCC opitmize("O3")
#pragma G++ opitmize("O3")
#include<stdio.h>
#include<string.h>
#include<algorithm>
using namespace std;
int f[200010