t
a
g
:
tag :
tag: 思维
并查集
传送门 : 不能直接传送的可能没有报名该场周赛
题意 : 给定一个字符数组包含表示向左向右走
询问有多少个
i
i
i满足,可以根据走出边界
思路 : 看完这题一眼就并查集了。我们发现不管怎么样最后的点都会经过两边。因此我们将走向两边的点分为两个集合
同时判断两边是否合法,判断当前集合是否满足即可
因为一眼题了,对于这个题也没细想。看了题解之后发现。我们并不需要分集合,因为向左边的路只能是n;
init();
cin>>(s+1);
if(s[1] == '') flag[n] = 1;
Fup(i,1,n){
if(s[i] == ''){
int fa = find(L[i]);
int fb = find(L[i+1]);
L[fa] = fb;
}
}
int cnt = 0 ;
Fup(i,1,n){
int fi = find(L[i]);
if(flag[fi]){
++cnt;
}
}
cout