专栏文章
题解:AT_cf17_final_e Combination Lock
AT_cf17_final_e题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @ming9ion
- 此快照首次捕获于
- 2025/12/02 01:55 3 个月前
- 此快照最后确认于
- 2025/12/02 01:55 3 个月前
#include <bits/stdc++.h>
#define int long long
#define maxm 200005
using namespace std;
int n,m,len,l,r,d[maxm],fa[maxm];
bool flag=true;
string s;
void init(){
for(int i=0;i<=len;i++){
fa[i]=i;
d[i]=s[i]-s[i-1];
}
}
int getfa(int x){
if(fa[x]==x)return x;
return fa[x]=getfa(fa[x]);
}
void merge(int l,int r){
int x=getfa(l);
int y=getfa(r);
if(x!=y){
fa[x]=y;
d[x]=d[y]=d[x]+d[y];
}
return;
}
signed main(){
cin>>s;
cin>>n;
len=s.length();
init();
for(int i=0;i<=len;i++){
merge(i,len-i);
}
for(int i=1;i<=n;i++){
cin>>l>>r;
merge(l-1,r);
}
for(int i=0;i<=len;i++){
if(d[i]%26==0||getfa(i)!=i)continue;
flag=false;
}
if(flag==true)cout<<"YES\n";
else cout<<"NO\n";
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...