UVALive
来源:互联网 发布:cad网络培训 编辑:程序博客网 时间:2024/06/16 21:13
题意:
给出26个大写字母到置换B,问是否存在一个置换A,使得 A^2 == B
题解:
刘汝佳白书148页结论知:
一个长度为n的循环置换,(1)当n为奇数的时候,可以由两个相同的2×n长到循环节分裂得到,或者两个相同的长度为 n 的循环节相乘得到
(2)当n为偶数的时候,只能由两个相同的2×n长到循环节分裂得到
故:
把置换B分解成若干个循环节到时候
只需要求解长度为偶数的循环节的个数是否为偶数,若是则输出yes,否则no
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;int main(){int T;char str[100];int vis[100],num[100];//freopen("in.txt","r",stdin);scanf("%d",&T);while(T--){memset(vis,0,sizeof(vis));memset(num,0,sizeof(num));scanf("%s",str);for(int i=0;i<26;i++){if(!vis[i]){int cnt=0,p=i;while(!vis[p]){cnt++;vis[p]=1;p=str[p]-'A';}num[cnt]++;}}int ok=1;for(int i=0;i<26;i+=2)if(num[i]%2==1) ok=0;if(ok) puts("Yes");else puts("No");}return 0;}
阅读全文
0 0
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- UVALive
- gulp使用问题汇总
- JAVA【泛型】
- linux文件颜色
- 探究服务(一)---异步消息处理流程
- VMware:在部分链上无法执行所调用的函数,请打开父虚拟磁
- UVALive
- python json的一些使用情况
- zookeeper基本概念(1)
- 使用fasttext完成文本处理及文本预测
- Android小知识
- 042. 字符统计(20)
- linux ettercap+wireshark抓取局域网内其他设备的数据包
- 怎样申请建立一个全新的顶级域名后缀?
- Windows 7 重装系统后驱动不适配