宁波自助建站模板,东莞寮步二手车市场,wordpress循环所有文章,wordpress做导航站分析#xff1a; 赛时我是直接模拟的#xff0c;tle然后mle#xff0c;补提#xff0c;发现规律#xff0c;每一个改变的字符串都只会对应一个需要改变的区间#xff0c;例如第一个样例前两个101100 - 011100和101100 - 011100#xff0c;对应区间在确定改变的范… 分析 赛时我是直接模拟的tle然后mle补提发现规律每一个改变的字符串都只会对应一个需要改变的区间例如第一个样例前两个101100 - 011100和101100 - 011100对应区间在确定改变的范围后可以发现是一样的所以可以将给出的区间变成真正改变的区间用set只存区间就可以了对于找本质改变的区间只有出现10这种序列才可以确定要改变因此对于给定的l,r可以找从l开始向后遍历的第一个10以及从r开始向前遍历的第一个10得到的区间就是真正需要改变的区间还有可能如果l.r的时候区间不存在那么表示s本身没有改变也算一种新的字符串也要存下来。
代码
#include bits/stdc.husing namespace std;
using ll long long;int main()
{ios::sync_with_stdio(false);cin.tie(nullptr);int T;cin T;while(T --){int n, m;cin n m;string s;cin s;s s;vectorint l(n 2, -1), r(n 2, n 2);for(int i 1; i n; i ) {l[i] l[i - 1];if(s[i] 0) l[i] i;}for(int i n; i 1; i --) {r[i] r[i 1];if(s[i] 1) r[i] i;}setpairint, int ans;while(m --) {int a, b;cin a b;if(r[a] l[b]) ans.insert({r[a], l[b]});else ans.insert({-1, -1});}cout ans.size() \n;}
}