#include<bits/stdc++.h>
using namespace std ;
using ll = long long;
using PII = pair<int,int>;
string s;
void solve(){
int n,m;
cin >> n >> m;
//vector<int>s(n+1);
vector<int>ne1(n+2,n+1);
vector<int>pre0(n+2,0);
cin>>s;
s = " " + s;
for(int i=1;i<=n;i++){
pre0[i] = pre0[i-1];
if(s[i] == '0'){
pre0[i] = i;
}
}
for(int i=n;i>=1;i--){
ne1[i] = ne1[i+1];
if(s[i] == '1'){
ne1[i] = i;
}
}
set<PII> s;
while(m--){
int l,r;
cin>>l>>r;
//cout<<ne1[l]<<" "<<pre0[r]<<endl;
if(ne1[l] > pre0[r]){
s.emplace(-1,-1);
}else{
s.emplace(ne1[l],pre0[r]);
}
}
cout<<s.size();
}
int main(){
int t;
cin>>t;
while(t--){
solve();
puts("");
}
}
用最小的变换区间代表整个大区间文章来源:https://www.toymoban.com/news/detail-613451.html
找到L右边最近的1 R左边最近的0 变换区间就在这两个之间文章来源地址https://www.toymoban.com/news/detail-613451.html
到了这里,关于div 2 c Binary String Copying的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!