专栏文章

题解: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 条评论,欢迎与作者交流。

正在加载评论...