社区讨论
代码爆0求调
P11361[NOIP2024] 编辑字符串参与者 1已保存回复 1
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 1 条
- 当前快照
- 1 份
- 快照标识符
- @mieiyxgr
- 此快照首次捕获于
- 2025/11/25 20:01 3 个月前
- 此快照最后确认于
- 2025/11/25 20:44 3 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
string a,b,c,d;
struct node{
int l,r,num=0,numm=0;
}q[1000001],qq[1000001];
int main(){
int T,n;
cin>>T;
while(T--){
int cnt=0,cntt=0,ans=0;
cin>>n>>a>>b>>c>>d;
int flag=-1,num=0,numm=0;
for(int i=0;i<n;i++){
if(c[i]=='1'){
if(a[i]=='0') num++;
else numm++;
}
if(c[i]=='1'&&flag==-1){
q[++cnt].l=i;
flag=0;
}
if(c[i]=='1'&&c[i+1]=='0'){
q[cnt].r=i;
q[cnt].num=num;
q[cnt].numm=numm;
num=0,numm=0;
flag=-1;
}
if(i==n-1&&c[i]=='1'){
q[cnt].r=i;
q[cnt].num=num;
q[cnt].numm=numm;
num=0,numm=0;
}
}
flag=-1,num=0,numm=0;
for(int i=0;i<n;i++){
if(d[i]=='1'){
if(b[i]=='0') num++;
else numm++;
}
if(d[i]=='1'&&flag==-1){
qq[++cntt].l=i;
flag=0;
}
if(d[i]=='1'&&d[i+1]=='0'){
qq[cntt].r=i;
qq[cntt].num=num;
qq[cntt].numm=numm;
num=0,numm=0;
flag=-1;
}
if(i==n-1&&d[i]=='1'){
qq[cntt].r=i;
qq[cntt].num=num;
qq[cntt].numm=numm;
num=0,numm=0;
}
}
int sum=1,summ=1;
for(int i=0;i<n;i++){
if(i>q[sum].r) sum++;
if(i>qq[summ].r) summ++;
if(c[i]=='0'&&d[i]=='0'){
if(a[i]==b[i]) ans++;
else continue;
}
if(c[i]=='0'&&d[i]=='1'){
if(a[i]=='0'){
if(qq[summ].num>=1){
ans++;
qq[summ].num--;
}
else qq[summ].numm--;
}
if(a[i]=='1'){
if(qq[summ].numm>=1){
ans++;
qq[summ].numm--;
}
else qq[summ].num--;
}
}
if(c[i]=='1'&&d[i]=='0'){
if(b[i]=='0'){
if(q[sum].num>0){
ans++;
q[sum].num--;
}
else q[sum].numm--;
}
if(b[i]=='1'){
if(q[sum].numm>0){
ans++;
q[sum].numm--;
}
else q[sum].num--;
}
}
if(c[i]=='1'&&b[i]=='1'){
if(q[sum].num>0&&qq[summ].num>0){
ans++;
q[sum].num--;
qq[summ].num--;
}
else if(q[sum].numm>0&&qq[summ].numm>0){
ans++;
q[sum].numm--;
qq[summ].numm--;
}
else{
if(q[sum].num>0){
q[sum].num--;
qq[summ].numm--;
}
else if(q[sum].numm>0){
q[sum].numm--;
qq[summ].num--;
}
}
}
}
cout<<ans;
}
}
回复
共 1 条回复,欢迎继续交流。
正在加载回复...