题解:P10753 [COI 2022-2023] Bliskost
LinkCatTree · · 题解
考虑如果字符串
#include <bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int n,q,sum1,sum2;
char s[N],t[N];
int main() {
freopen("tmp.in","r",stdin);
scanf("%d%d%s%s",&n,&q,s+1,t+1);
for(int i=1;i<=n;i++)
if(i&1) sum1+=s[i]-'a';
else sum1-=s[i]-'a';
((sum1%=26)+=26)%=26;
for(int i=1;i<=n;i++)
if(i&1) sum2+=t[i]-'a';
else sum2-=t[i]-'a';
((sum2%=26)+=26)%=26;
if(sum1!=sum2) printf("ne\n");
else printf("da\n");
while(q--) {
int p; char op[3];
scanf("%d%s",&p,op+1);
if(p&1) sum1+=op[1]-s[p];
else sum1-=op[1]-s[p];
s[p]=op[1],((sum1%=26)+=26)%=26;
if(sum1!=sum2) printf("ne\n");
else printf("da\n");
}
return 0;
}