专栏文章
题解:AT_abc419_d [ABC419D] Substr Swap
AT_abc419_d题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mio4wpuh
- 此快照首次捕获于
- 2025/12/02 13:25 3 个月前
- 此快照最后确认于
- 2025/12/02 13:25 3 个月前
ABC419D Substr Swap - Solution
Problem Statement
给定两个长度均为 的字符串 ,有 次操作,每次给定 ,每次交换 的 ,求最终的 。
Analysis
由于一直在 中交换子串,那么我们其实无需真正交换,只要更新一段区间被操作的次数即可。容易发现,只要某个字符被操作的次数是偶数,那么它不变,否则和 中的字符交换。
Approach
在分析后,发现只需要维护区间和的操作,容易想到差分,每次对 的操作就相当于 ,最后做前缀和并判断奇偶即可。
Code
CPP#include<bits/stdc++.h>
using namespace std;
const int N=5e5+5;
int n,m,d[N],sum[N];
string s,t;
int main(){
cin>>n>>m>>s>>t;
s=' '+s;
t=' '+t;
while(m--){
int l,r;
cin>>l>>r;
d[l]++; //差分区间修改
d[r+1]--;
}
for(int i=1;i<=n;i++){
sum[i]=sum[i-1]+d[i]; //前缀和
if(sum[i]%2) //按奇偶性判断是否要更改
cout<<t[i];
else
cout<<s[i];
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...