#include<cstdio>#include<iostream>#include<utility>#include<vector>#include<cstring>#include<cmath>#include<cstdlib>#include<algorithm>#include<queue>#include<set>#include<map>#include<set>#include<array>#include<random>#include<bitset>#include<ctime>#include<limits.h>#include<assert.h>#include<unordered_set>#include<unordered_map>#define RI register int#define CI const int&#define mp make_pair#define fi first#define se second#define Tp template <typename T>usingnamespace std;
typedeflonglong LL;
typedeflongdouble LDB;
typedefunsignedlonglong u64;
typedef pair <int,int> pi;
typedef vector <int> VI;
typedef array <int,3> tri;
constint N=200005;
int blk[N];
structques{
int l,r,id;
friendinlinebooloperator < (const ques& A,const ques& B)
{
return blk[A.l]!=blk[B.l]?blk[A.l]<blk[B.l]:A.r<B.r;
}
}q[N]; int t,n,m,sz,ta[N],tb[N],ans[N]; char a[N],b[N];
intmain(){
//freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);for (scanf("%d",&t);t;--t)
{
RI i,j; scanf("%d%s%s",&n,a+1,b+1);
for (sz=(int)sqrt(n),i=1;i<=n;++i) blk[i]=(i-1)/sz+1;
for (scanf("%d",&m),i=1;i<=m;++i)
scanf("%d%d",&q[i].l,&q[i].r),q[i].id=i;
RI l=1,r=0,p=1; sort(q+1,q+m+1);
for (i=1;i<=blk[n];++i)
{
int ret=0,lim=min(n,i*sz); r=lim;
int tmp_ta[3],tmp_tb[3]; tmp_ta[0]=-1;
while (p<=m&&blk[q[p].l]==i)
{
auto chk=[&](int& x,CI y)
{
if (x==0&&y==1) ++ret;
if (x==1&&y==0) --ret;
x=y;
};
auto addr=[&](CI r)
{
ta[r]=a[r]-'0'; tb[r]=b[r]-'0'; ret+=ta[r];
if (r-2>=l)
{
if (tb[r]&&tb[r-2]) chk(ta[r-1],1);
if (a[r]=='0'&&a[r-2]=='0') tb[r-1]=1;
if (r-3>=l&&tb[r-1]&&tb[r-3]) chk(ta[r-2],1);
}
};
auto addl=[&](CI l)
{
ta[l]=a[l]-'0'; tb[l]=b[l]-'0'; ret+=ta[l];
if (l+2<=r)
{
if (tb[l]&&tb[l+2]) chk(ta[l+1],1);
if (a[l]=='0'&&a[l+2]=='0') tb[l+1]=1;
if (l+3<=r&&tb[l+1]&&tb[l+3]) chk(ta[l+2],1);
}
};
auto BF=[&](CI l,CI r)
{
RI i; staticint ta[N],tb[N];
for (i=l;i<=r;++i) ta[i]=a[i]-'0',tb[i]=b[i]-'0';
for (i=l;i+2<=r;++i) if (a[i]=='0'&&a[i+2]=='0') tb[i+1]=1;
for (i=l;i+2<=r;++i) if (tb[i]&&tb[i+2]) ta[i+1]=1;
int cur=0; for (i=l;i<=r;++i) cur+=ta[i]; return cur;
};
l=lim+1;
if (q[p].r-q[p].l+1<=sz+10)
{
ans[q[p].id]=BF(q[p].l,q[p].r);
++p; continue;
}
while (r<q[p].r) addr(++r);
if (tmp_ta[0]==-1)
{
for (j=0;j<3;++j) tmp_ta[j]=ta[lim+1+j];
for (j=0;j<3;++j) tmp_tb[j]=tb[lim+1+j];
}
int tmp=ret;
while (l>q[p].l) addl(--l);
ans[q[p++].id]=ret; ret=tmp;
for (j=0;j<3;++j) ta[lim+1+j]=tmp_ta[j];
for (j=0;j<3;++j) tb[lim+1+j]=tmp_tb[j];
}
}
for (i=1;i<=m;++i) printf("%d\n",ans[i]);
}
return0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
2023-07-04 AtCoder Regular Contest 163
2019-07-04 2019绍一集训