专栏文章
题解:SP1843 LEONARDO - Leonardo Notebook
SP1843题解参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @miqqu7u4
- 此快照首次捕获于
- 2025/12/04 09:14 3 个月前
- 此快照最后确认于
- 2025/12/04 09:14 3 个月前
思路
判断是否有解:
寻找完所有的环,判断是否是偶环,如果都是偶环,且偶环的路径数成双成对地出现,或全是奇环,就输出 ,否则输出 。
寻找完所有的环,判断是否是偶环,如果都是偶环,且偶环的路径数成双成对地出现,或全是奇环,就输出 ,否则输出 。
我们发现这里出现了置换群。为什么出现了置换群呢?
-
它的单位元为一个字符串为 到 。
-
逆元是本身。
-
本题中的字母,置换后还是字母,满足封闭性。
-
没有交换律。
-
它的运算属于单目运算,和结合律没关系。
代码
CPP#include<bits/stdc++.h>
using namespace std;
int v[30],t[30],T;
char B[30];
int main() {
cin>>T;
while(T--) {
cin>>x;
memset(v,0,sizeof(v));//不要忘了初始化
memset(t,0,sizeof(t));
for(int i=0; i<=25; ++i) {
if(!v[i]) {
int j=i,n=0;
do {
v[j]=1;
j=x[j]-'A';
n++;
} while(j!=i);
t[n]++;//枚举每个循环,用桶统计循环个数
}
}
int flag=1;
for(int i=2; i<=26; i+=2) {
if(t[i]%2==1) {
flag=0;//循环不是偶数,不能匹配
}
}
if(flag) {
cout<<"Yes\n";
} else {
cout<<"No\n";
}
}
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...